如何使用php访问多维数组

时间:2017-12-15 03:13:17

标签: php arrays multidimensional-array

我有一个这样的数组:

array(4) {
  [0]=>
  array(1) {
    ["id"]=>
    string(3) "207"
  }
  [1]=>
  array(1) {
    ["id"]=>
    string(4) "1474"
  }
  ["date"]=>
  string(39) "Fri Dec 08 2017 00:00:00 GMT+0700 (WIB)"
  ["content"]=>
  string(4) "test"
}

我知道如何访问datecontent,但我不知道如何访问id。我尝试使用这个循环:

for ($i=0; $i < count($data); $i++){
     var_dump($data[$i]['id']);
}

但我收到了错误

  

未定义的偏移量:2表示内容和日期。

我如何访问这些ID?

3 个答案:

答案 0 :(得分:1)

使用foreach,然后检查它的数组。如果您不想datecontent,请删除else

<?php
$arr = [
    ['id' => '207'],
    ['id' => '1474'],
    'date' => 'Fri Dec 08 2017 00:00:00 GMT+0700 (WIB)',
    'content' => 'test'
];

foreach ($arr as $key => $value) {
    if (is_array($value)) {
        echo $value['id'];
    } else {
        echo $value;
    }
}

// 2071474Fri Dec 08 2017 00:00:00 GMT+0700 (WIB)test

https://3v4l.org/TOnnH

答案 1 :(得分:1)

您撰写的循环正在尝试访问不存在的密钥$data[2]$data[3]。您应该能够使用id$data[0]["id"]获取这些$data[1]["id"]个密钥。尝试这样的事情,foreach循环。

foreach ($data as $key => $val) {
    echo ((is_array($val)) ? $val["id"] : $val);
}

答案 2 :(得分:1)

您可以使用foreach并在foreach内添加条件array

<强>解决方案:

$data = array(
    array('id' => '207'),
    array('id' => '1474'),
    'date' => 'Fri Dec 08 2017 00:00:00 GMT+0700 (WIB)',
    'content' => 'test'
);

foreach($data as $key => $val){
    if(is_array($val)){
        //We can use foreach instead of printin it out directly 
        //if this array will have more value
        //If not just use $val['id']
        foreach($val as $k => $v){
            echo $k . ' = ' . $v . '<br />';
        }
    }else{
        echo $key . ' = ' . $val . '<br />';
    }
}

<强>输出

id = 207
id = 1474
date = Fri Dec 08 2017 00:00:00 GMT+0700 (WIB)
content = test