嗨,我想让复杂数组在视图中使用起来更简单。
然而,我有点陷入了一个循环
请看我对阵列有什么误解
我想要这个阵列简单的
'collection' => [
(int) 0 => [
'type' => 'col',
'name' => '2016 F/W',
'url' => 'blablabla'
],
(int) 1 => [
'type' => 'col',
'name' => '2015 F/W',
'url' => 'blablabla'
],
(int) 2 => [
'type' => 'project',
'name' => '2015 F/W',
'url' => 'blablabla'
]
]
我想要这个像一样的阵列
[
(int) 0 => [
'type' => 'col',
'type2' => [
(int) 0 => [
'name' => '2016 F/W',
'image' => [
(int) 0 => [
'url' => null
],
(int) 1 => [
'url' => null
]
]
],
(int) 1 => [
'name' => '2015 F/W',
'image' => [
(int) 0 => [
'url' => null
]
]
]
]
],
(int) 1 => [
'type' => 'project',
'type2' => [
(int) 0 => [
'name' => '2015 F/W',
'image' => [
(int) 0 => [
'url' => null
]
]
],
]
]
请帮忙!!我快疯了!!!!
我不得不说,结果数组看起来不是很有用。由于没有太多关于这项任务目标的信息,我只提供我对如何完成这项任务的看法。。
$arr = array(
'collection' => array(
array(
'type' => 'col',
'name' => '2016 fw',
'url' => 'blabla1'
),
array(
'type' => 'col',
'name' => '2015 F/W',
'url' => 'blabla2'
),
array(
'type' => 'project',
'name' => '2015 F/W',
'url' => 'blabla_project'
),
),
);
// $types array will hold a list of all types. type in this
// example is 'col' and 'project'.
// we will use $types to find if type X was already added to the
// result array.
$types = array();
// Every type X will be in the result array in key K, So $typesMap
// will map between the type to the key in the result array.
// Example: type X is located in the result array under key K
// So I can find the type X data by looking at the
// $resultArr[K]
$typesMap = array();
$typeIndx = 0;
// This is the result array.
$resultArr = array();
// run over all collections
foreach($arr['collection'] as $collection){
// get the current type. e.g 'col'
$type = $collection['type'];
// Search the $types array for 'col' to see if it was defined
// already.
if(!in_array($type, $types)) {
// if it wasn't defined then define it now:
// add it to the $types array so that we can find it on
// the next run.
$types[] = $type;
// define the key (K) that it will be in the $resultArr
$typesMap[$type] = $typeIndx;
// Create the 'col' key in the result array.
$resultArr[$typeIndx] = array('type' => $type, 'type2' => array());
$typeIndx++;
}
// get the key for type $type.
// remember? I can use the $typesMap to find the type's index
// in the result array.
$currentIndx = $typesMap[$type];
// add the extra data to the 'type2' (not a very good name for
// this)
$resultArr[$currentIndx]['type2'][] = array(
'name' => $collection['name'],
'image' => $collection['url']
);
}
我并没有真正理解结果数组的url部分。。