0

跟进这个问题,我还有一个问题 - 我有两个相同的子键,但它们的键中有不同的数组组合variant,例如,

Array
(
    [1] => Array
        (
            [b] => Array
                (
                    [quantity_request] => 1
                    [time_created] => 1339688613
                    [variant] => Array
                        (
                         [0] => x
                         [1] => y
                        )

                )

        )

    [2] => Array
        (
            [b] => Array
                (
                    [quantity_request] => 1
                    [time_created] => 1339688631
                    [variant] => Array
                        (
                         [0] => x
                         [1] => z
                        )

                )

        )

    [3] => Array
        (
            [c] => Array
                (
                    [quantity_request] => 1
                    [time_created] => 1339688959
                    [variant] => Array
                        (
                        )

                )

        )

)

那么,我怎样才能找到这个项目的匹配项,

    [b] => Array
                        (
                            [quantity_request] => 1
                            [time_created] => 1339688631
                            [variant] => Array
                                (
                                 [0] => x
                                 [1] => z
                                )

                        )

    function get_letter($letter,$array)
        {
            foreach($this->content as $k => $v)
            {
                if(array_key_exists($letter, $v))
                {
                    return $k;

                }
            }
            return false;

        }

list($key,$different) = get_letter('b',array("x","z")); // return 1

如果有匹配,我想要这样的结果,

2

有任何想法吗?

4

2 回答 2

0

数组是按值进行比较的,所以这应该可以正常工作。

$key = array_search($needle, $haystack);

$needle您要为其查找密钥的数组在哪里。

http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.types

于 2012-06-14T17:53:07.013 回答
0

您只需要添加:

if ($v['variant'] == $array)

在您的if语句中将variant数组与作为参数传递的数组进行比较。

function get_letter($letter, $array)
{
     foreach($this->content as $k => $v)
     {
          if(array_key_exists($letter, $v))
          {
               if ($v['variant'] == $array)
                   return $k;
          }
     }

     return false;
}
于 2012-06-14T17:57:31.087 回答