我有一个看起来像这样的数组,
[0] => Array
(
[youtube_showreel_url_1] => youtube1.com
[youtube_showreel_description] => youtube1.com - desc
)
[1] => Array
(
[youtube_showreel_url_2] => youtube2.com
[youtube_showreel_description] => youtub2.com - desc
)
[2] => Array
(
[youtube_showreel_url_3] => youtube3.com
[youtube_showreel_description] => youtube3.com - desc
)
[3] => Array
(
[youtube_showreel_url_4] => youtube4.com
[youtube_showreel_description] => youtube4.com - desc
)
[4] => Array
(
[youtube_showreel_url_5] => youtube5.com
[youtube_showreel_description] => youtube5.com - desc
)
是否有可能将PHP变成看起来像这样的东西?
[0] => Array (
[youtube_showreel_url_1] => youtube1.com
[youtube_showreel_description] => youtube1.com - desc
[youtube_showreel_url_2] => youtube2.com
[youtube_showreel_description] => youtub2.com - desc
[youtube_showreel_url_3] => youtube3.com
[youtube_showreel_description] => youtube3.com - desc
[youtube_showreel_url_4] => youtube4.com
[youtube_showreel_description] => youtube4.com - desc
[youtube_showreel_url_5] => youtube5.com
[youtube_showreel_description] => youtube5.com - desc
)
可以将它爆炸或通过循环或其他东西运行吗?
答案 0 :(得分:1)
假设您的原始数据保存在名为$input
的变量中:
// This will hold the result
$result = array();
foreach ($input as $index => $item) { // Loop outer array
foreach ($item as $key => $val) { // Loop inner items
$result[$key] = $val; // Create entry in $result
}
}
// Show the result
print_r($result);
但是,您的输入具有多次出现的相同键,后面的值将覆盖第一个。所以你可能想做这样的事情:
foreach ($input as $index => $item) { // Loop outer array
foreach ($item as $key => $val) { // Loop inner items
$result[$key.$index] = $val; // Create entry in $result
}
}
答案 1 :(得分:0)
<?php
$aNonFlat = array(
1,
2,
array(
3,
4,
5,
array(
6,
7
),
8,
9,
),
10,
11
);
$objTmp = (object) array('aFlat' => array());
array_walk_recursive($aNonFlat, create_function('&$v, $k, &$t', '$t->aFlat[] = $v;'), $objTmp);
var_dump($objTmp->aFlat);
/*
array(11) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
[9]=>
int(10)
[10]=>
int(11)
}
*/
?>
来源:http://ca.php.net/manual/fr/function.array-values.php#86784
答案 2 :(得分:0)
数组键必须具有唯一的名称,这意味着您将无法拥有多个youtube_showreel_description
键,否则您只需覆盖该值。您可以将密钥重命名为youtube_showreel_description_NN
,其中NN是描述的编号,类似于您的网址。
答案 3 :(得分:0)
&#34; youtube_showreel_description&#34;
您应该考虑更好的数据结构
我建议你保留它的多维数组结构
Array
(
[0] => Array
(
[url] => youtube1.com
[description] => youtube1.com - desc
)
[1] => Array
(
[url] => youtube2.com
[description] => youtube2.com - desc
)
[2] => Array
(
[url] => youtube3.com
[description] => youtube3.com - desc
)
[3] => Array
(
[url] => youtube1.com
[description] => youtube3.com - desc
)
[4] => Array
(
[url] => youtube1.com
[description] => youtube4.com - desc
)
)
如果您喜欢这种方式,我认为它更干净,更容易解析
答案 4 :(得分:0)
不完全是,[youtube_showreel_description]
会在每次声明后覆盖自己,您需要为每个键使用唯一标识符。如果键不重要,您可以使用foreach循环遍历现有数组并设置常规迭代键并“知道”数组进入集合,其中第一个元素是url,第二个元素是描述。
编辑:如果键不重要,您可以使用url作为键和描述作为值,这样可以更容易迭代,因为每个元素只与一个项目相关。
答案 5 :(得分:0)
正如大家已经提到的那样,你会在' youtube_showreel_description '上发生碰撞。这样的事情怎么样?:
// values (stays the same - no need to reformat)
$values = array(
array(
'youtube_showreel_url_1' => 'youtube1.com',
'youtube_showreel_description' => 'youtube1.com desc'
),
array(
'youtube_showreel_url_2' => 'youtube2.com',
'youtube_showreel_description' => 'youtube2.com desc'
),
array(
'youtube_showreel_url_3' => 'youtube3.com',
'youtube_showreel_description' => 'youtube3.com desc'
),
array(
'youtube_showreel_url_4' => 'youtube4.com',
'youtube_showreel_description' => 'youtube4.com desc'
)
);
// the good stuff
$result = array_map(function($v) {
return array(
'url' => array_shift($v),
'description' => $v['youtube_showreel_description']
);
}, $values);
// result
array(4) {
[0]=>
array(2) {
["url"] => string(12) "youtube1.com"
["description"] => string(17) "youtube1.com desc"
}
[1]=>
array(2) {
["url"] => string(12) "youtube2.com"
["description"] => string(17) "youtube2.com desc"
}
[2]=>
array(2) {
["url"] => string(12) "youtube3.com"
["description"] => string(17) "youtube3.com desc"
}
[3]=>
array(2) {
["url"] => string(12) "youtube4.com"
["description"] => string(17) "youtube4.com desc"
}
}