繁体   English   中英

php数组和foreach /数组唯一/数组推键=>值

[英]php array and foreach / array unique / array push key=> value

我在php中有一个循环返回此结果:

  • 名称1 =>值x
  • 名称2 =>值y
  • 名称3 =>值x
  • 名称1 =>值y
  • 名称2 =>值y

我想创建一个像这样的数组:

$myarray=array('name 1' =>'value x, value y','name 2'=>'value y',name 3=>'value x')

因此,有了这个数组,我可以像这样操作它:

foreach($myarray as $key=>$item){
    echo $key.'=>'.$item;
}

结果:

  • 名称1 =>值x,值y
  • 名称2 =>值y
  • 名称3 =>值x

我怎样才能做到这一点?

它看起来很糟糕,因为php没有本地列表。 当键可以相同时,您不应使用哈希映射(关联数组)。 我尚未测试以下内容,但类似以下内容:

<?
$arr = Array(
Array('n1',Array('x','y'))
, Array('n2',Array('x'))
, Array('n3',Array('y'))
);

foreach($arr as $value){
list($name,$values) = $value;
foreach($values as $value){
echo "$name -> $value".PHP_EOL;
}
}
?>

为输出创建一个空数组,然后为每个输入值检查键是否已经存在。

$result = array();

foreach($myarray AS $key=>$value) {
    if(array_key_exists($key, $result)) {
        // if the key exists in $result, add the value to the existing value
        $result[$key] += ', ' + $value;
    } else {
        // otherwise, just create it
        $result[$key] = $value;
    }
}
$array2 = array();
foreach ( $original_array as $key => $value )
{
  // Edited to address @adam's comment
  if ( !array_key_exists( $key, $array2 ) ) $array2[$key] = array();
  $array2[$key][] = $value;
}

foreach ( $array2 as $key => $values )
{
  $values_str = join( ', ', array_unique( $values ) );
  print "$key => $values_str";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM