Php 如何重新构造多维数组?
我的阵列有问题基本上这就是我的问题:Php 如何重新构造多维数组?,php,multidimensional-array,Php,Multidimensional Array,我的阵列有问题基本上这就是我的问题: $test = array( "image" => array( "name" => array( "name.jpg", "name2.jpg", "name3.jpg" ), "type" => array( "image/jpeg", "imag
$test =
array(
"image" => array(
"name" => array(
"name.jpg",
"name2.jpg",
"name3.jpg"
),
"type" => array(
"image/jpeg",
"image/jpeg",
"image/jpeg",
),
"size" => array(
118108,
589788,
1387074
)
)
)
这就是我想要的:
$test2 =
array(
"0" => array(
"name" => "name.jpg",
"type" => "image/jpeg",
"size" => 118108
),
"1" => array(
"name" => "name2.jpg",
"type" => "image/jpeg",
"size" => 589788
),
"2" => array(
"name" => "name3.jpg",
"type" => "image/jpeg",
"size" => 1387074
)
)
因此,我需要某种脚本,将第一个数组结构重做为第二个数组结构我认为这样做:
<?php
$result = array();
foreach($test['image'] as $key=>$data){
foreach($data as $id=>$val){
$result[$id][$key] = $val;
}
}
?>
这应该可以做到:
$test =
array(
"image" => array(
"name" => array(
"name.jpg",
"name2.jpg",
"name3.jpg"
),
"type" => array(
"image/jpeg",
"image/jpeg",
"image/jpeg",
),
"size" => array(
118108,
589788,
1387074
)
)
);
$output=array();
foreach(range(0,(count($test["image"])-1)) as $i)
{
$output[$i]=array($test["image"]["name"][$i],$test["image"]["type"][$i],$test["image"]["size"][$i]);
}
var_dump($output);
PHP语法允许多种方法实现此目的,例如foreach循环(项的键始终相同): 或者在以下情况下,在“外观不好”中使用
array\u shift
/array\u pop
:
while(
($name = array_pop( $test["image"]["name"])) &&
($type = array_pop( $test["image"]["type"])) &&
($size = array_pop( $test["image"]["size"]))
) {
$output[] = array(
'name' => $name,
'type' => $type,
'size' => $size,
);
}
第二种方法会破坏输入数组,并且比第一种方法更难读取,但它可以确保不存在数组键的问题。这里有一种更通用的解决方案。它将用任何属性名重建数组。我还将其包装在一个函数中,以使其更易于使用 使用:
function func(array $input)
{
$result = array();
foreach ($input as $type => $properties) {
foreach ($properties as $name => $values) {
for ($i = 0; $i < count($values); $i++) {
$result[$i][$name] = $values[$i];
}
}
}
return $result;
}
希望有帮助 实际上没有什么特别的,我只是在谷歌上搜索了一些随机脚本,但我找不到我需要的
function func(array $input)
{
$result = array();
foreach ($input as $type => $properties) {
foreach ($properties as $name => $values) {
for ($i = 0; $i < count($values); $i++) {
$result[$i][$name] = $values[$i];
}
}
}
return $result;
}
Array
(
[0] => Array
(
[name] => name.jpg
[type] => image/jpeg
[size] => 118108
)
[1] => Array
(
[name] => name2.jpg
[type] => image/jpeg
[size] => 589788
)
[2] => Array
(
[name] => name3.jpg
[type] => image/jpeg
[size] => 1387074
)
)