Php 返回包含数组的数组位置

Php 返回包含数组的数组位置,php,arrays,Php,Arrays,假设我给您以下数组: $array = array ( array ( 'key' => 'value' ), array ( 'key' => 'another value' ), array ( 'key' => 'yet another value' ), array ( 'key' => 'final value' ) ); 我想从这个数组中得到的是数

假设我给您以下数组:

$array = array (
    array (
      'key' => 'value'
    ),
    array (
      'key' => 'another value'
    ),
    array (
      'key' => 'yet another value'
    ),
    array (
      'key' => 'final value'
    )
);
我想从这个数组中得到的是数组的位置以及提供的值。因此,如果我在
$array
中搜索
“另一个值”
的值,结果应该是:
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.
        }
    }
}
更新: 钥匙总是一样的

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

这应该是您要查找的内容。

因为您需要数组的位置,所以请使用如下计数:-

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

如果键相同,您可以简单地执行此操作:

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

正如您所说,key总是相同的,所以您可以像这样在循环外声明一个变量

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

钥匙总是一样的吗?@n-dru是的,钥匙总是一样的。你已经决定哪一个答案适合你了吗?:-)