根据其他键从多维数组中获取键

时间:2014-02-25 12:21:45

标签: php arrays multidimensional-array key

我有一个这样的多维数组,我是从JSON转换而来的:

Array (

    [1] => Array (
        [name] => Test
        [id]   => [1]
    )

    [2] => Array (
        [name] => Hello
        [id]   => [2]
    )
)

如果id等于用户提供的值,我该如何返回name的值? (例如,如果用户键入“Test”,我希望它返回“1”)

编辑:如果有人想要的话,这是有效的代码:

$array = json_decode(file_get_contents("json.json"), true);
foreach($array as $item) {
    if($item["name"] == "Test")
        echo $item["id"];
}

5 个答案:

答案 0 :(得分:1)

经典解决方案是使用foreach简单地遍历数组并检查每行的name。当它与您的搜索字词匹配时,您找到了所需的id,因此break停止搜索并使用该值执行某些操作。

如果您使用的是PHP 5.5,那么使用array_column的方便解决方案就可以使用{{3}}:

$indexed = array_column($data, 'id', 'name');
echo $indexed['Test']; // 1

答案 1 :(得分:1)

您可以使用此功能

function searchObject($value,$index,$array) {
    foreach ($array as $key => $val) {
       if ($val[$index] === $value)
            return $val;
    }
    return null;
}

$MyObject= searchObject("Hello","name",$MyArray);
$id = $MyObject["id"];

答案 2 :(得分:0)

这是解决方案

$count = count($array);
$name = $_POST['name']; //the name which user provided
for($i=1;$i<=$count;$i++)
{
  if($array[$i]['name']==$name)
  {
   echo $i;
   break;
  }
}

享受

答案 3 :(得分:0)

试试这个:

$name = "Test";

foreach($your_array as $arr){
  if($arr['name'] == $name){
     echo $arr['id'];
  }
}  

答案 4 :(得分:0)

您可以在某些功能中手动执行此操作:

   function find($items, $something){
       foreach($items as $item)
       {
          if ($item["name"] === $something)
             return $item["id"];
       }
       return false;
    }