循环不适用于关联数组Php

时间:2019-04-01 07:37:13

标签: php arrays

我可以对关联数组进行多维处理吗,现在我正在关注结果

    Array
(
    [0] => Array
        (
            [id] => 1
            [minimum_marks] => 55
            [maximum_marks] => 65
        )

    [1] => Array
        (
            [id] => 2
            [minimum_marks] => 44
            [maximum_marks] => 70
         }
)

我只想将所有值都放在单个值中,我想要类似以下数组的结果

Array
(
    [id] => 1
    [minimum_marks] => 55
    [maximum_marks] => 65
)
Array
(
    [id] => 2
    [minimum_marks] => 44
    [maximum_marks] => 70
)

这是我的代码,我的代码没有显示带有循环的一条记录(代码应该显示所有的minimum_marks和maximum_marks),我错了吗?

$ result = $ query-> result_array();

$simpleArray = [];
foreach ($result as $skuArray) {
  $simpleArray['minimum_marks'] = $skuArray['minimum_marks'];
  $simpleArray['maximum_marks'] = $skuArray['maximum_marks'];
}

print_R($simpleArray);

2 个答案:

答案 0 :(得分:0)

我不知道您为什么期望这个输出。但是我的建议是,如果您真的想要吗?

$simpleArray = [];
foreach ($result as $skuArray) {
  $simpleArray['minimum_marks'] = $skuArray['minimum_marks'];
  $simpleArray['maximum_marks'] = $skuArray['maximum_marks'];
  print_R($simpleArray);
}

在循环内打印值,因此它不会推送,也不会创建多个数组。每次都会覆盖。但是请确保,最后您只能在simpleArray上获得最后一个数组值。希望你能理解!

让我举例说明。如果要在表格中显示标记,我建议您像下面那样直接返回,而不是创建变量并再次检索它。

echo '<table>
<tr><th>Min Marks</th><th>Max Marks</th></tr>';
foreach ($result as $skuArray) {
  $minMarks = $skuArray['minimum_marks'];
  $maxMarks = $skuArray['maximum_marks'];
  echo '<tr><td>'.$minMarks.'</td><td>'.$minMarks.'</td></tr>';
}
echo '</table>';

答案 1 :(得分:0)

我真的不明白你想要什么。

如果要使用两个不同的变量获取数组,可以尝试以下操作:

使用动态变量,该变量的名称在循环中动态生成。

foreach($result as $key => $_array){
   //$key is your inder of you multidimensional
   $name_variable = '_array_number_'.$key; //Name of the variable
   $$name_variable = $_array; //Instanciate dynamic variable
}

//You got now this two array
print_r($_array_number_0); 
print_r($_array_number_1); 

但是下次请更加精确地说明您的期望以及为什么需要这样做。

顺便说一句,您的代码所发生的事情是,在第一个循环中,您在$ _simple_array中实例化了“ minimum_marks”和“ maximum_marks”。

但是在第二个循环中,您覆盖“ minimum_marks”和“ maximum_marks”的值。