2014-12-02 89 views
1

我有一個像這樣來自POST的多維數組;訪問多維數組到單個數組

array(4) { 
    ["id"]=> array(3) { 
     [0]=> string(1) "4" 
     [1]=> string(1) "5" 
     [2]=> string(1) "6" 
     } 
    ["deliverer"]=> array(3) { 
     [0]=> string(13) "x" 
     [1]=> string(12) "y" 
     [2]=> string(5) "z" 
     } 
    ["num_users"]=> array(3) { 
     [0]=> string(2) "10" 
     [1]=> string(2) "10" 
     [2]=> string(1) "5" 
     } 
    ["ADD"]=> string(6) "FORWARD" 
     } 

我想將ID與「deliverrer」和「num_users」關聯以更新MySQL中的表。我都試過這樣:

foreach ($_POST as $data){ 
    var_dump($data); 
    } 

foreach ($_POST as $key=>$value){ 
    var_dump($value); 
    } 

但在這兩種情況下,我沒有在正確的方向前進。我不是很熟練,所以我希望有一些關於如何正確進行的提示。

親切的問候,

克里斯

+0

你喜歡什麼類型的數組有在結束了嗎?你能舉個例子嗎? – pistou 2014-12-02 11:58:08

+0

當然,對於多維數組中的每個索引,array('id'=>'value','deliverer'=>'value','num_users'=>'value')。歡呼聲,並提前致謝。 – user3396476 2014-12-02 12:04:06

+1

看看http://php.net/manual/en/function.array-column.php - 它確實是你想要的。 – mudasobwa 2014-12-02 12:10:09

回答

0

這是一個potentital解決方案,最終取決於您的需求。

$datas = array(); 
foreach ($_POST['id'] as $k => $id) { 
    $datas[] = array("id" => $id, "deliverer" => $_POST['deliverer'][$k], "num_users" => $_POST['num_users'][$k]); 
} 

「更容易理解」的解決辦法是:

$datas = array(); 
foreach ($_POST['id'] as $k => $id) { 
    $datas[$k]['id'] = $id; // or $_POST['id'][$k] 
    $datas[$k]['deliverer'] = $_POST['deliverer'][$k]; 
    $datas[$k]['num_users'] = $_POST['num_users'][$k]; 
} 
1
$ids = $_POST['id']; 
$deliverer = array(); 
$num_users = array(); 
$num_usersRaw = $_POST['num_users']; 
$i=0; 
foreach ($_POST['deliverer'] as $k=>$v) { 
    $id = $ids[$i]; 
    $deliverer[$id] = $v; 
    $num_users[$id] = $num_usersRaw[$i]; 
    ++$i; 
} 

說明:

獲取所有的ID第一。

這將作爲deliverernum_rows陣列的密鑰。

$_POST['deliverer']上循環,然後將鍵值分配給兩個數組:$deliverer$num_users

+0

加1作解釋。 – 2014-12-02 12:08:23