返回包含数组的数组位置

时间:2015-06-10 17:14:07

标签: php arrays

假设我给你以下数组:

$array = array (
    array (
      'key' => 'value'
    ),
    array (
      'key' => 'another value'
    ),
    array (
      'key' => 'yet another value'
    ),
    array (
      'key' => 'final value'
    )
);

我想从这个数组得到的是数组的位置和提供的值。因此,如果我在$array搜索"yet another value"的值,则结果应为:2,因为匹配的数组位于第2位。

我知道要做以下事情:

foreach ($array as $a) {
    foreach ($a as $k => $v) {
        if ($v ===  "yet another value") {
            return $array[$a]; // This is what I would do, but I want
                               //  the int position of $a in the $array.
                               //  So: $a == 2, give me 2.
        }
    }
}

更新

密钥始终相同

4 个答案:

答案 0 :(得分:4)

如果密钥相同,您可以这样做:

$v = "yet another value";
$a = array_search(array("key"=>$v),$array);
echo $a;//2

http://sandbox.onlinephpfunctions.com/code/1c37819f25369725effa5acef012f9ce323f5425

答案 1 :(得分:1)

foreach ($array as $pos => $a) {
    foreach ($a as $k => $v) {
        if ($v ===  "yet another value") {
            return $pos;
        }
    }
}

这应该是你要找的。

答案 2 :(得分:0)

由于你想要数组的位置,所以使用如下的计数: -

var count = 0;
foreach ($array as $a) {
    foreach ($a as $k => $v) {
        if ($v ===  "yet another value") {
            return count; 
        }
       count++;
    }
}

答案 3 :(得分:0)

正如你所说的那个键总是一样的,所以你可以像这样在外循环声明一个变量。

$position = 0;
foreach ($array as $a) {
    foreach ($a as $k => $v) {
        if ($v ===  "yet another value") {
            return $position;
        }
    }
    $position++;
}