【问题标题】:How to get a value from arrays with php [duplicate]如何使用php从数组中获取值[重复]
【发布时间】:2017-11-23 08:06:29
【问题描述】:

我将这些数据数组存储在变量$ids

array(3) {
  [0]=>
  array(1) {
    ["id"]=>
    string(3) "472"
  }
  [1]=>
  array(1) {
    ["id"]=>
    string(3) "475"
  }
  [26]=>
  array(1) {
    ["id"]=>
    string(3) "498"
  }
}

如何获取每个 id 的值?我尝试使用 for 循环,但它不起作用。

for ($i=0; $i < count($ids); $i++){
   echo "ID is " . $ids['id'][$i];
}

【问题讨论】:

  • 那行不通@splash 看看键
  • 你需要foreach($ids as $id){ echo $id["id"];}
  • @splash58,它返回错误Undefined offset: 2

标签: php arrays for-loop


【解决方案1】:

改用foreach 循环:

foreach($ids as $id)
{
   echo "ID is " . $id['id'];
}

因为您的密钥不像1,2,3....,所以for 循环不起作用,但foreach 会。

【讨论】:

  • for 循环可以工作,但要困难得多。
  • 还不错,但丑陋且难以阅读。 3v4l.org/eUBAg
  • 是的,这很好。但是,如果最大密钥会更高,这将循环大量不必要的密钥。但这是一个很好的解决方案
【解决方案2】:

如果你有一个非顺序的数组顺序,你可以使用 foreach 而不是 for 循环。

演示:https://3v4l.org/ViHoW

<?php

$datas = array(
    0 => array(
        'id' => '472'
    ),
    1 => array(
        'id' => 475
    ),
    26 => array(
        'id' => '498'
    )
);

foreach ($datas as $data) {
    echo $data['id'] . PHP_EOL;
}

或者如果你真的想使用 for 循环,就这样做吧。

演示 v2:https://3v4l.org/EYlft

<?php

$datas = array(
    0 => array(
        'id' => '472'
    ),
    1 => array(
        'id' => '475'
    ),
    26 => array(
        'id' => '498'
    )
);


$datas = array_values($datas); // array_values will re-index your array to 0, 1, 2, 3, ...
$data_count = count($datas); // make it a habit not to use function in for loop header to prevent multiple execution.

for ($i = 0; $i < $data_count; $i++) {
    echo $datas[$i]['id'] . PHP_EOL;
}

【讨论】:

    【解决方案3】:

    用于演示目的。这就是您可以使用 for 循环并且数组仍然完好无损的方式。 (没有数组值弄乱了键)。

    $ids = array(0=>
    array( 
    "id"=>"472"
    ),
    1=>
    array(
    "id"=>"475"
    ),
    26=>
    array(
    "id"=>"498"
    ));
    
    $keys = array_keys($ids);
    
    For($i=0; $i<count($keys); $i++){
        Echo $ids[$keys[$i]]["id"] ."\n";
    }
    

    我使用 array_keys 来获取密钥或 $ids。
    然后我 for 循环键并将键用作 $ids 中的键。
    是的,它很乱......

    https://3v4l.org/eUBAg

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-27
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2015-08-30
      • 2019-09-19
      相关资源
      最近更新 更多