操纵多维数组

时间:2013-06-25 07:34:09

标签: php arrays multidimensional-array

欢迎我有一个问题,这可能很简单,但我无法找到解决问题的方法。我有几个看起来像这样的数组:

  'contract' => 
  0 => '6'
  1 => '6'
  2 => '6'
 'folder_id' => 
  0 => '1'
  1 => '1'
  2 => '1'
 'service' => 
  0 => '2'
  1 => '2'
  2 => '2'
 'value' => 
  0 => '12'
  1 => '12'
  2 => '66'
 'currency_id' => 
  0 => '6' 
  1 => '9' 
  2 => '6' 

我想操纵它们,所以我可以得到类似的东西:

'0' =>
'contract' => '6'
'folder_id' => '1'
'service' => '2'
'value' => '12'
'currency_id' => '6'
'1' =>
'contract' => '6'
'folder_id' => '1'
'service' => '2'
'value' => '12'
'currency_id' => '9'
'2' =>
'contract' => '6'
'folder_id' => '1'
'service' => '2'
'value' => '66'
'currency_id' => '6'

多次尝试,但失败了

4 个答案:

答案 0 :(得分:1)

$source=array(/*...*/);
$result=array();
array_walk($source,function($val,$key)use(&$result){
    foreach($val as $k=>$v){
        $result[$k][$key]=$v;
    }
});

Online demon

Online demo 2

需要PHP> = 5.3

答案 1 :(得分:0)

我认为你可能正在寻找类似的东西。希望这有帮助     

if(isset($_POST['folder_id']) && isset($_POST['contract']) && isset($_POST['service']) && isset($_POST['value'])){   
    $folder_id= $_POST['folder_id'];
    $value= $_POST["value"];
    $service= $_POST['service'];
    $contract= $_POST['contract'];

if (!isset($_SESSION["array"]) || count($_SESSION["array"]) < 1) { 
$_SESSION["array"] = array(0 => array("contract" => $contract, "folder_id" => $folder_id, "service" => $service, "value" => $value, "currency_id" => $currency_id));
else{
//do something
}
}
}
?>

答案 2 :(得分:0)

尝试类似:

<?php

$arr = array(
    'contract' => array(
        0 => '6',
        1 => '6',
        2 => '6'
    ),
    'folder_id' => array(
        0 => '1',
        1 => '1',
        2 => '1'
    )
);

$res = array();
foreach($arr as $name => $subarr) {
    foreach($subarr as $id => $value) {
        if (! isset($res[$id])) $res[$id] = array();
        $res[$id][$name] = $value;
    }
}

print_r($res);

答案 3 :(得分:0)

如果这对您有帮助,请尝试运行此代码。我只是假设你有这些价值观。

$contract = array('6','6','6');
$folder_id = array('1','1','1');
$service = array('2','2','2');
$value = array('12','12','66');
$currency_id = array('6','9','6');

$l = count($contract);

$final_array = '';

for($x=0; $x<$l; $x++){

$final_array[$x][contract]=$contract[$x];
$final_array[$x][folder_id]=$folder_id[$x];
$final_array[$x][service]=$service[$x];
$final_array[$x][value]=$value[$x];
$final_array[$x][currency_id]=$currency_id[$x];

}

print_r($final_array);
相关问题