У меня есть массив таких массивов:
[0]
{
Array[0] { First_Name => "john" }
Array[1] { Last_Name => "smith" }
Array[2] { Job => "Worker Ant" }
}
[1]
{
Array[0] { First_Name => "jane" }
Array[1] { Last_Name => "smith" }
}
и т.д.. Давайте назовем это peopleArray
;
У меня также есть массив ключей, таких как "First_Name, Last_Name"
, которые соответствуют ключам в приведенных выше примерах. Я назову это headingArray
.
Я хочу повторить peopleArray
, разделенные запятыми, как это:
"'john', 'smith', 'Worker Ant'"
'jane','smith',''
И значения без ключей в headingArray
должны быть просто пустой строкой.
Я пробовал что-то вроде этого:
for($i=0; $i < count($headingArray); $i++){
foreach($peopleArray as $row){
foreach($row as $data){
if(key($data) == $headingArray[$i]){
echo '"'.current($data).'",';
}
}
}
//die();
echo "\r\n";
}
Где я перебираю каждый заголовок и пытаюсь сопоставить значения, но это явно не работает.
Должен быть более простой способ сделать это.
Кто-нибудь может мне помочь / направить меня в правильном направлении? Я стучу в этом в течение нескольких часов.
Редактировать: я придумал это. Он отображает все значения, которые мне нужны, но делает некоторые странные вещи, пропуская несуществующие:
foreach($peopleArray as $person) {
$prevKey = array();
$numItems = count($person);
$i = 0;
foreach($person as $heading) {
foreach($person as $key => $value) {
if(key($value) == $heading){
echo '"'.str_replace(',',' ',current($value)).'",';
$prevKey[] = key($value);
break;
} else if(in_array(key($value), $prevKey)) {
} else {
echo '"",';
}
}
//die(var_dump($prevKey));
$i++;
}
echo "\r\n";
}
Мне нужно вернуть пустую строку, если она не существует.