每个用变量键获取一个值

时间:2015-05-08 13:56:25

标签: php arrays

我发现很难解释但是我的页面有一个包含所有用户的多维数组,我需要从内部数组中获取值,而不需要知道主键。

我对阵列的熟悉程度还不高,现在我完全陷入了困境。我使用的功能有2个参数。第一个是用户的输入id,第二个是完整用户列表的数组。

function userInfo($i, $users){
    foreach($users['data'] as $user){
        if($i = $user['id']){
            return $user['SOMENAME?']['name'];
        }
    }
}

以下是我正在使用的数组示例:

{
   "data": {
      "Doe": {
         "id": 266,
         "title": "Doe title",
         "name": "Doe",
         "key": "Some key"
      },
      "John": {
         "id": 412,
         "title": "John title",
         "name": "John",
         "key": "Some key"
      }
}

我现在的函数只是返回Doe(数组中的第一个值),无论那里有多少数组。

当我不知道该特定阵列的主键名称时,如何返回标题或任何其他值?

4 个答案:

答案 0 :(得分:3)

你的if语句中有一个错误,你要分配一个值,而不是比较它(= vs ==或===)。

出于功能的目的,我不认为您需要知道密钥,因为您已经在数组中。例如

 function championInfo($i, $users){
     foreach($users['data'] as $index => $user){
        if($i == $user['id']){
            return $user['name'];
        }
    }
}

答案 1 :(得分:1)

foreach($users['data'] as $key => $user){
    if($i = $user['id']){
        return $champion[$key]['name'];
    }
}

答案 2 :(得分:0)

foreach($collecion as $key => $val){

那应该得到你的结果。

答案 3 :(得分:0)

试试这个;

foreach ($array as $key => $value) {
    echo "ID: {$value['id']}, Title: {$value['title']}, Name: {$value['name']}, Key: {$value['key']}<br />";
}

另一个版本(如果您认为这更具可读性)

foreach ($array as $key => $value) {
    list($id, $title, $name, $key) = array_values($value);
    echo "ID: {$id}, Title: {$title}, Name: {$name}, Key: {$key}<br />";
}