我试图根据值将数组拆分到不同的数组。 这是我的数组
$myArray=('x'=>'europe','y'=>'europe','a'=>'USA','b'=>'USA','c'=>'Canada');
我想根据下面的值分割数组
$newList[europe]=(x,y);
$newList[USA]=(a,b);
$newLsit[Canada]=(c);
我尝试了以下
foreach($myArray as $key =>$value){
$myList[$value]=$key;
}
和
foreach($myArray as $key => $value){
echo $key;
if($value=='USA')$myList['USA']=$key;
if($value=='europe')$myList['europe']=$key;
if($value=='Canada')$myList['Canada']=$key;
}
输出相同
Array ( [europe] => y [USA] => b [Canada] => c )
我不明白这个问题是什么。任何帮助都很受欢迎。
答案 0 :(得分:2)
你需要使用这个
$myList = array();
foreach($myArray as $key => $value)
{
if($value=='USA') $myList['USA'][]=$key;
if($value=='europe') $myList['europe'][]=$key;
if($value=='Canada') $myList['Canada'][]=$key;
}
答案 1 :(得分:2)
如果你有更多的国家,那么如果循环不是一个好方法。而不是你可以使用foreach语句为每个国家创建数组。请参阅以下代码,它可能会对您有所帮助。
$myArray = array('x'=>'europe','y'=>'europe','a'=>'USA','b'=>'USA','c'=>'Canada');
$new_array = array();
foreach($myArray as $key=>$val)
{
$new_array[$val][] = $key;
}
print_r($new_array);
答案 2 :(得分:1)
一种简单的方法。
$myArray= array('x'=>'europe','y'=>'europe','a'=>'USA','b'=>'USA','c'=>'Canada');
$grouped = array();
foreach ($myArray as $key => $group) {
$grouped[$group][] = $key;
}
print_r($grouped);
答案 3 :(得分:0)
array
多次无法key
次。因此,看起来key
被最新值覆盖。您需要以嵌套方式保存数组。
$myArray= array('x'=>'europe','y'=>'europe','a'=>'USA','b'=>'USA','c'=>'Canada');
foreach($myArray as $key => $value) {
// Value as the key & key in sub array
$new[$value][] = $key;
}
var_dump($new);
<强>输出强>
array(3) {
["europe"]=>
array(2) {
[0]=>
string(1) "x"
[1]=>
string(1) "y"
}
["USA"]=>
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
["Canada"]=>
array(1) {
[0]=>
string(1) "c"
}
}
答案 4 :(得分:0)
你需要在存在时推送数组并在不存在时分配 - 这将为任何警告而烦恼。使用array_key_exists()函数检查数组中的值是否为键?
$myArray = array('x'=>'europe','y'=>'europe','a'=>'USA','b'=>'USA','c'=>'Canada');
$newList = array();
foreach($myArray as $key => $value){
if(array_key_exists($value, $newList))
array_push($newList[$value], $key);
else
$newList[$value][] = $key;
}
print_r($newList);