2016-03-11 2 views
1

я вывешиваю этот вопрос в продолжение моего вопроса по этой ссылке: print values using for loop within foreach loopсравнить значения, извлекаемые из базы данных с существующими значениями массива

Я получил очень хорошее решение от одного человека и решения заключается в следующем:

foreach($officeDetails as $key=>$value){ 
     $str = $value['days']; 
     $arr = explode(", ", $str); 

    /*Output of $arr is : 
    Array ( 
    [0] => Monday 
    [1] => Tuesday 
) 
Array ( 
    [0] => Wednesday 
    [1] => Thursday 
    [2] => Friday 
) 
*/ 

     $daysArr = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"); 
     foreach($daysArr as $i => $days){ 
      echo $arr[$i]."<br/>"; 

       if($daysArr[$i] == $arr[$i]){ 
        echo "Selected ---- ".$days."<br/>"; 
       }else{ 
        echo $days."<br/>"; 
        } 
       } 
     } 

Теперь проблема, когда я использую этот

echo $arr[$i]."<br/>"; 

его печать все значения правильно с $ Аранжировка означает «Понедельник Вторник Среда Четверг Пятница», но когда я сравниваю два значения, используя, если условие:

if($daysArr[$i] == $arr[$i]){ 

он не проверяет второй массив, который является:

Array ( 
    [0] => Wednesday 
    [1] => Thursday 
    [2] => Friday 
) 

и показывает результат

Monday 
Tuesday 

Это означает, что проблема возникает при условии, если условие не находится в петле foreach в $ daysArr. Пожалуйста, помогите мне, почему это происходит в цикле if. Я полностью потерян. Ваши предложения будут высоко оценены.

С уважением.

+0

вы можете показать, что такое '$ значения [ 'дней'] 'есть. .. Я принимаю его строку, но важно, как она структурирована, поскольку у вас есть пробел в разделителе 'explode'. – Gavin

+0

Да, конечно. $ value выглядит следующим образом: Понедельник, вторник – Aisha

+0

Вторая запись состоит из среды, четверга, пятницы – Aisha

ответ

0

Я думаю, что ваши массивы имеют разные ключи/индексы.

Значение $ daysarr [1] = Вторник, но из-за вашего определения $ arr [1] = Четверг, который тогда не то же самое. Клавиши должны совпадать, чтобы сделать сравнение.

Возможное решение:

Make $ daysarr шаблон и $ обр просто да/нет.

Средство:

Когда вторник и суббота выбраны:

$daysarr: 
0->Monday 
1->Tuesday 
2->Wednesday 
3->Thursday 
4->Friday 
5->Saturday 

$arr: 
0->0 
1->1 
2->0 
3->0 
4->0 
5->1 

0 означает не выбран 1 означает выбранные

+0

Не могли бы вы рассказать мне, как соответствовать индексам, поскольку они представляют собой два разных массива. или что бы вы хотели предложить о решении, правильно ли это или неправильно? – Aisha

+0

$ arr - это два массива из двух разных записей, поступающих из $ officeDetails каждый раз, когда цикл foreach запускается, таким образом, когда первый раз, когда foreach из $ officeDetails будет выполнять $ arr дня понедельника, будет выполняться, и после печати этих значений он перейдет к $ officeDetails foreach loop, тогда среда, четверг, пятница будут напечатаны тогда, как может быть его конфликт индексов. Поправьте меня, если я ошибаюсь.Спасибо. – Aisha

+0

Я не понимаю вашу концепцию. Посмотрите на ответ выше. Может быть, это помогает :) – Alexander

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