Различные массивы преобразуются в многомерный массив

1

Я хочу объединить вывод нескольких массивов в одиночном массиве. Это массив, который я получаю, когда я это делаю.

print_r($getData_milestone);

У меня есть массивы, как показано ниже:

[milestone] => Array
    (
        [0] => milestone 1
        [1] => milestone 2
        [2] => milestone 3
    )

[date] => Array
    (
        [0] => 10/25/2015
        [1] => 10/30/2015
        [2] => 11/25/2015
    )

[status] => Array
    (
        [0] => 1
        [1] => 1
        [2] => 0
    )

И я хочу получить результат, например, ниже:

Array
(
    [0] => Array
        (
            [milestone] => milestone 1
            [date] => 10/25/2015
            [status] => 1
        )

    [1] => Array
        (
            [milestone] => milestone 2
            [date] => 10/30/2015
            [status] => 1
        )

    [2] => Array
        (
            [milestone] => milestone 3
            [date] => 11/25/2015
            [status] => 0
        )

)

Я пробовал этот код

foreach($getData_milestone['milestone'] as $miledata)
 {
  $allDatamile[$i]=$getData_milestone;
  $allDatamile[$i]=$getData_milestone['date'];
  $allDatamile[$i]=$getData_milestone['status'];
 $i++;
}
  • 0
    Вопросы, запрашивающие помощь или код, без каких-либо исследовательских усилий , не должны подниматься до момента их редактирования.
Теги:
arrays

4 ответа

3
Лучший ответ

Попробуйте это, и дайте мне знать результат. Он должен работать. Я рассматриваю данный массив как ассоциативный массив с ключами "вехой", "датой" и "статусом". Исправьте меня, если я ошибаюсь.

$outputArray = array();
foreach($givenArray['milestone'] as $key=>$val){
    $outputArray[$key]['milestone'] = $val;
    $outputArray[$key]['date'] = $givenArray['date'][$key];
    $outputArray[$key]['status'] = $givenArray['status'][$key];
}

print_r($outputArray)
  • 0
    Добро пожаловать. Пожалуйста, примите ответ, чтобы он был полезен и другим.
2

попробуй это,

    $a["milestone"][] = "milestone 1";
    $a["milestone"][] = "milestone 2";
    $a["milestone"][] = "milestone 3";
    $a["date"][] = "10/25/2015";
    $a["date"][] = "10/30/2015";
    $a["date"][] = "11/25/2015";
    $a["status"][] = "1";
    $a["status"][] = "1";
    $a["status"][] = "0";

    foreach ($a['milestone'] as $key => $val) {
        $a1[$key]["milestone"] = $val;
        $a1[$key]["date"] = $a['date'][$key];
        $a1[$key]["status"] = $a['status'][$key];
    }

выход

Array
(
[0] => Array
    (
        [milestone] => milestone 1
        [date] => 10/25/2015
        [status] => 1
    )

[1] => Array
    (
        [milestone] => milestone 2
        [date] => 10/30/2015
        [status] => 1
    )

[2] => Array
    (
        [milestone] => milestone 3
        [date] => 11/25/2015
        [status] => 0
    )

)
1

array_column (PHP 5> = 5.5.0) может помочь -

$keys = array_keys($arr);
// if the number of element increases(to make it more dynamic)
$count = count($arr['milestone']);
$i= 0;
while($i < $count) {
  $new[] = array_column($arr, $i);
  $i++;
}

foreach($new as $k => $n) {
   $new[$k] = array_combine($keys, $n);
}
var_dump($new);

DEMO

1

Попробуйте следующий код

$out= array();
$milestone=array
    (
        "milestone 1",
        "milestone 2",
        "milestone 3"
    );

$m_date=array
    (
        "10/25/2015",
        "10/25/2015",
        "10/25/2015"
    );

$status=array
    (
        0,1,1
    );


for($i=0;$i<count($milestone);$i++){
  $comArray=array
        (
            "milestone" => $milestone[$i],
            "date" => $m_date[$i],
            "status" => $status[$i]
        )
  $out[]=$comArray;
}

Надеюсь, что это решит вашу проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню