我有一个多维数组,我想在 for 循环中打印它。第一个数组维度 E.g
$arrayName[0]
的数组大小为 2,键从 0 => value1
开始,然后是 1 => value2
。然后 $arrayName[1]
的数组大小也为 2,但键从第一个数组维度按顺序开始,看起来像这样 2 => value3
和 3 => value4
。除了 2 和 3 个键之外,有没有办法可以将其设为 0 和 1,因为它是另一个第二数组维度?请在这件事上给予我帮助。谢谢。请看下面的图片。
我想要这样
for ($i = 0; $i < count($qualified_applicants); $i++) {
for ($j = 0; $j < count($appExp); $j++) {
if ($qualified_applicants[$i]->id == $appExp[$j]->applicant_id){
$temp[$appExp[$j]->applicant_id][$j] = $appExp[$j]->work.', '.$appExp[$j]->company_name.' - '.date("F j, Y", strtotime($appExp[$j]->start_date)).' - '.date("F j, Y", strtotime($appExp[$j]->end_date));
} else {
//
}
}
# code...
}
上面是我创建多维数组的代码。
$arr1 = array(
array(
"i m first value of 0th array",
"i m Second value of 0th array"
),
array(
2 => "I m first value of 1st array but my key started with 2 and i want to start it with 0",
3 => "I m Second value of 1st array but my key is 3 and i want to set it with 1"
)
);
echo "<pre>";
print_r($arr1); // array before
// above is you array i as understand
$newFormattedArray = array();
foreach($arr1 as $key => $value){
$newFormattedArray[$key] = array_values($value); // array_values() will set the order in asc, starts with 0
}
echo "<pre>";
print_r($newFormattedArray); // array after
与其添加另一个循环来在每个子数组上调用
array_values()
(记录可以是 array_map('array_values', $yourArray)
),不如重构和简化您的初始过滤和分组方法。
从
$qualified_applicants
数组创建一个查找数组,因为它在逻辑上仅具有唯一的 id
值。
然后您可以通过检查每个
$appExp
是否符合条件来避免运行嵌套循环。在结果数组中使用临时键将保持预期的分组。循环完成后,调用 array_values()
重新索引第一级键。
代码:(演示)
$lookup = array_flip(array_column($qualified_applicants, 'id'));
$result = [];
foreach ($appExp as $obj) {
if (isset($lookup[$obj->applicant_id])) {
$result[$obj->applicant_id][] = sprintf(
'%s, %s - %s - %s',
$obj->applicant_id,
$obj->work,
$obj->company_name,
date("F j, Y", strtotime($obj->start_date)),
date("F j, Y", strtotime($obj->end_date))
);
}
}
var_export(array_values($result));