PHP动态嵌套关联数组


PHP Dynamic Nested Associative Array

我有一个关联数组,它是用数据库中的值动态生成的。当我打印整个数组时,当我们输入print_r($array)时,它会给出如下结果:

  Array ( [95a5c80811239526fb75cbf31740cc35] => Array ( [product_id] => 2324) )

当我像这样回显时,

echo $array['95a5c80811239526fb75cbf31740cc35']['product_id'];

给出了产品id。但问题是,代码'95a5c80811239526fb75cbf31740cc35'每次都动态变化。不管这个代码是什么,我都想要回显产品id。

I tried

$array[]['product_id'];
$array['']['product_id'];

但不工作。有人能帮我吗?

在这种情况下可以使用 reset()

$array = array(
    '95a5c80811239526fb75cbf31740cc35' => array( // dynamic
        'product_id' => 2324
    ),
);
$value = reset($array); // set pointer to first element
echo $value['product_id']; // 2324

假设代码始终是数组中的第一个元素:

$array[0]['product_id'];

如果你想要所有的产品ID:

foreach($array as $product){
    $productIds[] = $product['product_id'];
}
// $productIds is now what $array was, but without the codes, so the product_id's are the first elements.

可以使用for each for this这样就可以得到product Id的值

 $array = Array ( [95a5c80811239526fb75cbf31740cc35] => Array ( [product_id] => 2324) )
foreach($array as $product){
echo $product['product_id'];
}

这将得到你想要的o/p

如果您在使用关联数组时遇到问题,那么您可以首先将其转换为数字,如下所示

    $arr=array( 'first' => array( 'product_id' => 2324) );
    $arrr=array_values($arr);
     echo $arrr[0]['product_id'];
输出:

2324

希望这对了解array_values有帮助请点击这里

根据您的情况,有以下几种可能的解决方案:

$array = array_shift(array_values(
  Array(
    '95a5c80811239526fb75cbf31740cc35' =>
       Array(
          'product_id' => 2324
       )
    )));
echo $array['product_id']; // 2324

另一个解决方案,可能更有效:

echo array_shift(array_slice($array, 0, 1)); // 2324

对于PHP 5.4+,您可以使用:

echo array_values($array)[0]; // 2324
$array[0]['product_id'];