使用PHP查找多维数组中元素的位置

时间:2011-03-25 03:53:45

标签: php arrays

我有这段代码:array_search($key, $array)。 $ key是1到10之间的任何数字。$ array看起来像这样:

id    name
 1    foo
 2    bar 
 3    lol 
 4    asdf

我只是想在阵列中找到名字的位置。所以如果我有“foo”,我会得到0,如果我有“lol”,我会有2.任何帮助?

4 个答案:

答案 0 :(得分:1)

$id = 2
foreach ($array as $value) {
    if ($value['id'] == $id) {
        echo $value['name'];
        break;
    }
}

答案 1 :(得分:0)

$i = array_search($foo, array_values($array));

呃,我想我误解了你输入数组的含义。

这可能是你想要的:

function find_position($key, array $array, $col)
{
  $i = 0;
  foreach ($array as $item) /* or as $i => $item, not sure what you want */
  {
    if ($item[$col] == $key) return $i;
    ++$i;
  }
  return NULL;
}

$i = find_position('foo', $array, 'name');

关于上述代码中的评论......很明显,如果您使用它,那么您不需要$i = 0$++i

答案 2 :(得分:0)

您需要使用array_values将数组重新索引为零索引。

$index = array_search($foo, array_values($array));

这将返回:

echo array_search('foo', array_values($array)); // 0
echo array_search('bar', array_values($array)); // 1
echo array_search('lol', array_values($array)); // 2
echo array_search('asdf', array_values($array)); // 3

答案 3 :(得分:-1)

<?php
    $array = array("1"=>"foo","2"=>"bar","3"=>"lol","4"=>"asdf");

    $value="foo";

    $key = array_search($value, $array);

    $pos =array_search($key, array_keys($array));

    echo "element pos is: ". ($pos);

?>