0

你好,

我想在 foreach 循环中获取数组键的序号。

例子

<?php
$array = array("id" => 2, "username" => "foobar");
foreach($array as $value){
$array_key = search_array($value, $array);
//find the ordinal number of $array_key from $array here.
echo $value;
}

count 返回数组中数组键的总数,我需要获取数组键的序数。我希望你们明白我的要求。

4

4 回答 4

2

据我了解,如果一个条目有一个字符串键,它在数组中没有序数位置。从http://php.net/manual/en/language.types.array.php

PHP 中的数组实际上是一个有序映射。映射是将值与键相关联的类型。这种类型针对几种不同的用途进行了优化;它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。由于数组值可以是其他数组,因此树和多维数组也是可能的。

有序映射不会在已经存在的字符串键之上分配序号键。

但是,您可以做的是获得伪序键是增加一个变量。

$i=0;

foreach( $array as $key => $value ) {
    echo $i.':'.$key.':'.$value;
    $i++;
}

将回显出数组中的每个序号键、键和值。

于 2012-05-13T09:16:17.427 回答
2

有另一个变量在每次迭代后都会增加值。

于 2012-05-13T09:12:04.357 回答
0

您可以像这样使用当前函数:

foreach($array as $value){
$array_key = search_array($value, $array);
echo current( $array );
echo $value;
}

或者您可以像这样在循环中添加一个计数器:

$count = 0;
foreach($array as $value){
$array_key = search_array($value, $array);
echo $count++;
echo $value;
}
于 2012-05-13T09:14:01.080 回答
0
<?php
     $arry = array("id" => 2; "username" => "foobar");
     $idx = 0;
     foreach($array as $value){
         if(array_search(arry, $value)) echo "element found: ".$idx;
         $idx++;
     }
?>

您需要的是另一个变量 - 上面示例中的 $idx 来计算迭代次数,因为您不能使用与它们命名的值相对应的“键”。

搜索功能也确实称为array_search

于 2012-05-13T09:22:07.767 回答