簡體   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