2013-03-19 3 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

+1

Я думаю, что небольшая область здесь поможет. 1-й вопрос - чего вы пытаетесь достичь? Второй вопрос - есть ли только эти 3 массива для рассмотрения или может быть какой-то номер? – Raad

+0

1-й ответ - я хочу пропустить все 3 разных переменные массива, чтобы найти, какая переменная массива имеет элемент «оранжевый». 2-й ответ - есть только 17 массивов, они исправлены, не будет меньше и не будет больше. Только 17. – zac1987

ответ

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', $ array));' from u today. Благодарю. – zac1987

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 
Смежные вопросы