PHP数组操作需要技巧
我一次提交了阵列,请参见以下详细信息:PHP数组操作需要技巧,php,arrays,Php,Arrays,我一次提交了阵列,请参见以下详细信息: array(5) { ["ambition_id"]=> array(2) { [55]=> string(2) "55" [60]=> string(2) "60" } ["target"]=> array(1) { [0]=> string(8) "target 1" [1]=> string(8) "
array(5) {
["ambition_id"]=>
array(2) {
[55]=> string(2) "55"
[60]=> string(2) "60"
}
["target"]=>
array(1) {
[0]=> string(8) "target 1"
[1]=> string(8) "target 2"
}
["strides"]=>
array(1) {
[0]=> string(1) "1"
[1]=> string(1) "1"
}
["date"]=>
array(1) {
[0]=> string(10) "2017-02-08"
[1]=> string(10) "2017-03-08"
}
["frequency"]=>
array(1) {
[0]=> string(1) "1"
[1]=> string(1) "2"
}
}
实际上,我在mysql中有两个表,“野心”和“目标”。野心是一组目标(“野心id”是“目标”表中的外键)。该数组将存储在“target”表中。这就是为什么会有“雄心壮志”的原因
我尝试过很多次,但都失败了(使用foreach),现在我需要有人能给我帮助
用蛮力,这很容易!我已经解决了它,但我需要“更高级”的数组操作
我怎么会这样呢
array(2) {
[0] => array('ambition_id' => 55,
'target' => 'target 1',
'strides' => 1,
'date' => '2017-02-08',
'frequency' => 1
),
[1] => array('ambition_id' => 60,
'target' => 'target 2',
'strides' => 2,
'date' => '2017-03-08',
'frequency' => 2)
}
请帮忙,谢谢 您必须以数据为中心:
$data = array (
"ambition_id" =>
array (
55 => "55",
60 => "60"
),
"target" =>
array (
0 => "target 1",
1 => "target 2"
),
"strides" =>
array (
0 => "1",
1 => "1"
),
"date" =>
array (
0 => "2017-02-08",
1 => "2017-03-08"
),
"frequency" =>
array (
0 => "1",
1 => "2"
)
);
// pivot data
$pivot = array();
foreach ($data as $datum => $values) {
$value_index = 0;
foreach ($values as $value) {
$pivot[$value_index][$datum] = $value;
$value_index++;
}
}
print_r($pivot);
这假设您只有两个级别的数据,并且数据表现良好。您必须调整数据:
$data = array (
"ambition_id" =>
array (
55 => "55",
60 => "60"
),
"target" =>
array (
0 => "target 1",
1 => "target 2"
),
"strides" =>
array (
0 => "1",
1 => "1"
),
"date" =>
array (
0 => "2017-02-08",
1 => "2017-03-08"
),
"frequency" =>
array (
0 => "1",
1 => "2"
)
);
// pivot data
$pivot = array();
foreach ($data as $datum => $values) {
$value_index = 0;
foreach ($values as $value) {
$pivot[$value_index][$datum] = $value;
$value_index++;
}
}
print_r($pivot);
这假设您只有两个级别的数据,并且数据表现良好。不是最佳答案,但它解决了您的问题
<?php
$array = [
"ambition_id" =>
[
55 => "55",
60 => "60"
],
"target" =>
[
0 => "target 1",
1 => "target 2"
],
"strides" =>
[
0 => "1",
1 => "1"
],
"date" =>
[
0 => "2017-02-08",
1 => "2017-03-08"
],
"frequency" =>
[
0 => "1",
1 => "2"
],
];
$result = array();
foreach ($array as $k => $v) {
foreach ($v as $kk => $vv) {
if ($k == "ambition_id") {
$result[] = array($k => $vv);
} else {
$result[$kk][$k] = $vv;
}
}
}
不是最好的答案,但它解决了您的问题
<?php
$array = [
"ambition_id" =>
[
55 => "55",
60 => "60"
],
"target" =>
[
0 => "target 1",
1 => "target 2"
],
"strides" =>
[
0 => "1",
1 => "1"
],
"date" =>
[
0 => "2017-02-08",
1 => "2017-03-08"
],
"frequency" =>
[
0 => "1",
1 => "2"
],
];
$result = array();
foreach ($array as $k => $v) {
foreach ($v as $kk => $vv) {
if ($k == "ambition_id") {
$result[] = array($k => $vv);
} else {
$result[$kk][$k] = $vv;
}
}
}
只需使用循环数组和用户array\u值
重新索引内部数组中的循环,并将其存储到新数组中,如下所示
<?php
$new_array =array();
foreach($array as $key1=>$row1 )
{
$ss =array_values($row1);
foreach($ss as $key2=>$row2)
{
$new_array[$key2][$key1]=$row2;
}
}
echo "<pre>";
print_r($new_array);
?>
只需使用循环数组和用户数组_值
将循环重新索引到内部数组中,并将其存储到新数组中,如下所示
<?php
$new_array =array();
foreach($array as $key1=>$row1 )
{
$ss =array_values($row1);
foreach($ss as $key2=>$row2)
{
$new_array[$key2][$key1]=$row2;
}
}
echo "<pre>";
print_r($new_array);
?>
$final_array=array(array_column($array,0),array_column($array,1))@a第一个子数组没有0
,1
索引。需要先转换它。@SougataBose yesI会回去看看你是如何创建数组的,并让处理过程生成一个你想要的数组,而不是摆弄这个数组。如果你让你的问题可读,他们也会读它。如果没有,他们就继续前进$final_array=array(array_列($array,0),array_列($array,1))@a第一个子数组没有0
,1
索引。需要先转换它。@SougataBose yesI会回去看看你是如何创建数组的,并让处理过程生成一个你想要的数组,而不是摆弄这个数组。如果你让你的问题可读,他们也会读它。如果没有,他们就继续前进!