2013-03-19 52 views
-2
<?php 
$tiger = array ("orange", "white"); 
$cat = array ("black", "white", "brown"); 
$fruit = array ("purple", "red", "green", "brown"); 
?> 

如何輸出類似:如何在PHP中打印或回顯數組?

orange : tiger 
white : tiger + cat 
black : cat 
brown : cat + fruit 
purple : fruit 
+0

爲什麼不'print_r'或'var_dump'? – ShuklaSannidhya 2013-03-19 16:26:00

+1

我認爲這裏有一點範圍會有所幫助。第一個問題 - 你想達到什麼目的?第二個問題 - 只有這3個陣列需要考慮,還是可以有任何數字? – Raad 2013-03-19 16:31:08

+0

第一個答案 - 我想遍歷所有3個不同的數組變量,以找出哪個數組變量具有「橙色」的元素。 第二個答案 - 只有17個數組,它們是固定的,不會少,也不會多。只有17. – zac1987 2013-03-19 16:33:06

回答

5

一點樂趣與陣列:

$arrays = compact('tiger', 'cat', 'fruit'); 
$values = array_unique(call_user_func_array('array_merge_recursive', $arrays)); 

foreach ($values as $value) { 
    $found = array(); 
    foreach ($arrays as $name => $bag) { 
     if (in_array($value, $bag)) { 
      $found[] = $name; 
     } 
    } 
    echo "$value: ".implode(", ", $found)."\n"; 
} 

你可以平凡這種通過修改第一線擴展到任何數量的陣列。

See it in action

+0

非常感謝。它完美的作品。我學習了一個新東西'array_unique(call_user_func_array('array_merge_recursive',$ arrays));'從今天開始。謝謝。 – zac1987 2013-03-19 16:54:44

2

因此,看起來您有興趣採用各種對象的顏色,並且切換關聯以使顏色反射對象,而不是反過來。

這是一種方法與您的方案作品:

<?php 
// The objects we wish to extract colors for 
$subjects = array(
    'tiger' => array ("orange", "white"), 
    'cat' => array ("black", "white", "brown"), 
    'fruit' => array ("purple", "red", "green", "brown") 
); 

// The array we will push colors to as keys, and objects to as values 
$consolidated = array(); 

// Iterate over each object 
foreach($subjects as $subject => $colors) { 
    // Iterate over each color in the object 
    foreach($colors as $color) { 
    $consolidated[$color][] = $subject; 
    } 
} 

// Print out results. 
foreach($consolidated as $subject => $contents) { 
    print $subject . ' : ' . implode(' + ', $contents) . "<br />\n"; 
} 

以上輸出:

orange : tiger 
white : tiger + cat 
black : cat 
brown : cat + fruit 
purple : fruit 
red : fruit 
green : fruit