2015-04-29 3 views
1

Я получаю больше практики с использованием циклов для циклов через массивы и задаю вопрос, который я пока не могу понять.PHP Зацикливание с помощью массивов с помощью цикла

У меня есть три петли, а в петлях - общие названия цветов. Используя первый цикл for, я просматриваю все три петли и нахожу общее имя цвета, это отлично работает.

Вторая часть - это то, где я нахожусь в тупике, как это сделать, как назначить массив общих значений в другой массив, чтобы просто показать эти общие значения.

Я знаю, что я могу использовать цикл foreach, который выполняет трюк, как показано ниже, но я пытаюсь понять, как это сделать с помощью цикла for.

Как это сделать? (Без использования array_intersect)

код: (это перебирает все массивы и дает мне общие ценности)

$array1 = ['red', 'blue', 'green']; 
$array2 = ['black', 'blue', 'purple', 'red']; 
$array3 = ['red', 'blue', 'orange', 'brown']; 

$value = []; 

$array_total = array_merge($array1, $array2, $array3); 

$array_length = count($array_total); 

for ($i = 0; $i < $array_length; $i++) { 
    if (!isset($value[$array_total[$i]])) { 
     $value[$array_total[$i]] = 0; 
    } 

    $a = $value[$array_total[$i]]++; 
} 
//print_r($value); -- Array ([red] => 3 [blue] => 3 [green] => 1 [black] => 1 [purple] => 1 [orange] => 1 [brown] => 1) 

Использование работы цикла Еогеасп, но хотят, чтобы узнать, как сделать это с цикл:

$commonValues = []; 

foreach ($value as $values => $count) { 
    if ($count > 2) { 
     $commonValues[] = $values; 
    } 
} 
print_r($commonValues); -- Array ([0] => red [1] => blue) 

ответ

5

Это должно работать для вас:

Просто используйте array_keys(), чтобы получить массив с помощью которого вы можете получить доступ к вашему ассоциативному массиву с Цифровые клавиши

<?php 

    $value = ["red" => 3, "blue" => 3, "green" => 1, "black" => 1, "purple" => 1, "orange" => 1, "brown" => 1]; 
    $count = count($value); 
    $keys = array_keys($value); 

    for($i = 0; $i < $count; $i++) { 
     if ($value[$keys[$i]] > 2) { 
      $commonValues[] = $keys[$i]; 
     } 
    } 

    print_r($commonValues); 

?> 

выход:

Array ([0] => red [1] => blue) 
+0

Вы избили меня до этого! – Barmar

+0

Есть ли способ сделать это, не используя array_keys? Я должен ограничить использование встроенных функций php для учебных целей. – cattywampus

+1

@cattywampus Нет, теперь есть способ обойти это иначе, чем использовать цикл foreach. Вы как-то должны получить ключи для доступа к вашему массиву. – Rizier123

1

Это действительно используют некоторые другие функции PHP, но вот один другой способ, чтобы получить ключи без использования Еогеаспа.

<?php 

    $value = ["red" => 3, "blue" => 3, "green" => 1, "black" => 1, "purple" => 1, "orange" => 1, "brown" => 1]; 
    $count = count($value); 

    for($i = 0; $i < $count; $i++) { 

     if (current($value) > 2) { 
      $commonValues[] = key($value); 
     } 
     next($value); 
    } 

    print_r($commonValues); 

?> 
Смежные вопросы