我不知道如何让它以最佳方式运作。
我需要循环遍历下面的数组。我需要检查[country]索引是否等于西班牙语国家(我预定的许多国家),然后获得相应国家的那些[title]索引,检查重复项并创建新的更紧凑和简化的数组。 / p>
原始数组:
Array
(
[0] => Array
(
[title] => Jeux de pouvoir
[country] => France
)
[1] => Array
(
[title] => Los secretos del poder
[country] => Argentina
)
[2] => Array
(
[title] => Los secretos del poder
[country] => Mexico
)
[3] => Array
(
[title] => El poder secreto
[country] => Uruguay
)
)
goes on and on....
为了帮助您理解,我需要获得的最终结果如下:
Array (
[0] => Array
(
[title] => Los secretos del poder
[country] => Argentina, Mexico
)
[1] => Array
(
[title] => El poder secreto
[country] => Uruguay
)
)
正如您所看到的,当许多国家/地区都有相同的标题时,通过将这些国家/地区添加到相应[标题]的相同[国家/地区]索引来简化数组。
你会怎么做?
答案 0 :(得分:3)
假设$ spanish_countries是一组西班牙语国家......
foreach ( $array as $a ) {
if ( in_array($a['country'], $spanish_countries) ) {
$final_array[$a['title']][] = $a['country'];
}
}
这将导致最后一个不同的数组,但是到达你的格式是微不足道的
<小时/> 编辑评论
foreach ( $final_array as $k => $v ) {
$r[] = array(
'title' => $k,
'country' => implode(', ', $v)
);
}
print_r($r);
你想要更好的变量名称,但这将有效
答案 1 :(得分:1)
尝试:
$input = array( /* your data */ );
$output = $tmp = array();
foreach ( $input as $v ) {
if ( !isset($tmp[$v['title']]) {
$tmp[$v['title']] = array();
}
// here you can check if your counry is spanish speaking
if ( !in_array($v['country'], $spanishSpeakingCountries) ) {
continue;
}
$tmp[$v['title']][] = $v['country'];
}
foreach ( $tmp as $k => $v ) {
$output[] = array(
'title' => $k,
'country' => implode(', ', $v)
);
}
$output; // your output data
答案 2 :(得分:1)
foreach($yourarray as $data)
{
$newlist[$data['title']][] = $data['country'];
}
这会给你
Array (
['Los secretos del poder'] => Array
(
[0] => Argentina
[1] => Mexico
)
['El poder secreto'] => Array
(
[0] => Uruguay
)
)