PHP изменить структуру массива и установить статус

0

Код PHP:

foreach ($fetch_res as $res){

        echo '<pre>';print_r($res);
}

Созданный массив:

Array
(
    [USERID] => 13663
    [PROJID] => 999
    [ENTRYDATE] => 13-NOV-14
    [STARTDATE] => 01-NOV-14
    [ENDDATE] => 20-NOV-14
    [ACTIVE] => 123
    [ALLOCATION] => 456
)

Array
(
    [USERID] => 13664
    [PROJID] => 999
    [ENTRYDATE] => 13-NOV-14
    [STARTDATE] => 01-NOV-14
    [ENDDATE] => 20-NOV-14
    [ACTIVE] => 124
    [ALLOCATION] => 457
)

тогда как следующие поля имеют соответствующий идентификатор и статус, основанный на идентификаторах

ALLOCATION - 456(Y) / DEALLOCAION - 457(N) 
ACTIVE - 123(Y) / INACTIVE - 124(N)

Используя приведенную выше информацию, как я могу создать ниже требуемый формат массива

array("ProjId"=>999,
      "RS"=>array( //ALLOCATION ACTIVE
         0=>array("13663","N","Y")
         1=>array("13664","N","Y")
     )
);

RS - это ID ресурса, где N и Y указывают статус.

Благодарю.

Теги:
arrays
multidimensional-array

2 ответа

0
Лучший ответ
$data = array();
foreach ($fetch_res as $res){
    $data['ProjId'] = $res['PROJID'];
    $data['RS'][] = array($res['USERID'], ($res['ALLOCATION'] == 456) ? "Y" : "N", ($res['ALLOCATION'] == 123) ? "Y" : "N");
}

Если вам нужно это как строка, тогда -

$data['RS'][] = '"'.$res['USERID'].','. ($res['ALLOCATION'] == 456) ? "Y" : "N".','. ($res['ALLOCATION'] == 123) ? "Y" : "N".'"';
  • 0
    Спасибо за ответ. Но вместо [0] => Array ( [0] => 13663 [1] => N [2] => N ) , как я могу изменить его на 0=>array("13663","N","Y") ?
  • 0
    попробуйте с обновленным ответом.
Показать ещё 9 комментариев
1

грубое кодирование. вы можете уточнить свой стиль.

  foreach ($fetch_res as $res){
    if($res["ALLOCATION"] == "456")$allocation = "Y";
    else $allocation = "N";
    if($res["ACTIVE"] == "123")$active = "Y";
    else $active = "N";

    $result[$res["PROJID"]][] = array($res["USERID"],$allocation,$active));
  }

Ещё вопросы

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