Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Помогите разобраться


Recommended Posts

Есть 2 массива. В первом хранятся айди всех товаров. Во втором, айди избранных товаров. Мне нужно, сравнить эти айди и если есть совпадения - провести некоторые манипуляции. Делаю так:

foreach ($array1 as $value1) {
	foreach ($array2 as $value2) {
		if($value1 != $value2){
			$var = '0';
		}
		else{
			$var = '1';
		}
	}
}

Как я понимаю - должно все работать. Но у меня не выходит ($var равна 0 всегда). Ткните носом, что не так делаю. Спасибо!

$array1:
Array
(
    [0] => 10441
    [1] => 13302
    [2] => 13546
    [3] => 10500
    [4] => 10102
    [5] => 10119
    [6] => 10435
    [7] => 10785
    [8] => 10439
    [9] => 13199
    [10] => 10833
    [11] => 10343
    [12] => 10338
    [13] => 10101
    [14] => 13771
    [15] => 10443
    [16] => 10341
    [17] => 13268
    [18] => 10111
    [19] => 10113
    [20] => 10354
    [21] => 10114
    [22] => 10115
    [23] => 10116
    [24] => 10112
    [25] => 10517
    [26] => 10104
    [27] => 10108
    [28] => 10107
    [29] => 10118
    [30] => 10442
    [31] => 10314
    [32] => 10150
    [33] => 10106
    [34] => 10105
    [35] => 10110
    [36] => 14252
)

$array2:
Array
(
    [0] => 13199
    [1] => 10439
    [2] => 10435
    [3] => 10500
    [4] => 13302
    [5] => 10441
)

 

Змінено користувачем davyduck
Надіслати
Поділитися на інших сайтах


foreach ($array1 as $value1) {
        if (!in_array($value1, $array2) {
            $var = '0';
        } else {
            $var = '1';
        }
}

 

Надіслати
Поділитися на інших сайтах

foreach (array_intersect($array1, $array2) as $item) {
	...	
}

 

  • +1 2
Надіслати
Поділитися на інших сайтах

Для чего я это делаю. Первый массив (как писал выше) выводит айди товаров, второй айди выбраных товаров. Если айди одинаковые в переменную $checked заношу слово "checked" (таким образом хочу оставлять выбранными чекбоксы товаров которые уже в избранных). 

foreach($array1 as $value1){
	if(in_array($value1, $array2)){
		$data['checked'] = 'checked';
	}else{
		$data['checked'] = '';
	}
} 

Смотрю в код и понимаю, что все должно работать. Но не работает. Все чекбоксы получают checked. Не хочу что бы кто-то написал готовый код. Хочу разобраться в проблеме. Толкните советом. Спасибо!

 

<input type="checkbox" name="ID[]" value="<?php echo $item['ID']?>" <?php echo $checked;?>>

Так же, буду благодарный за более элегантный совет решения моей задачи :) 

Змінено користувачем davyduck
Надіслати
Поділитися на інших сайтах


Я могу лишь предположить как устроен ваш массив в контроллере но примерно как я это вижу:

$array2 = array(13199,10439,10435,10500,13302,10441);

$data['items'] = array();

$items = array(); //здесь вы получаете данные

if ($items) {
  foreach ($items as $item) {
    $data['items'][] = array(
      'id' => $item['id'],
      'checked' => (in_array($item['id'], $array2)) ? 'checked' : '' 
    );
  }
}

это так в контроллере может быть.

 

<input type="checkbox" name="id[]" value="<?php echo $item['id']?>" <?php echo $item['checked']?>>

 

Надіслати
Поділитися на інших сайтах

22 часа назад, davyduck сказал:

Не хочу что бы кто-то написал готовый код. Хочу разобраться в проблеме

 

22 часа назад, davyduck сказал:

Так же, буду благодарный за более элегантный совет решения моей задачи

Вы хотите разобраться или получит решение  ?

 

Если сами, тогда логика такая, получаете дифф  $data['diff'] = array_intersect($array1, $array2); тут будет ваша выборка id чего-то там

Дальше, в tpl проверяете если ли в массиве значение, и добавляете чек  <input ....  <?= in_array($id, $diff) ? 'checked' : ''; ?>

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.