Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Родитель ключа
Форумы портала PHP.SU » » Вопросы новичков » Родитель ключа

Страниц (1): [1]
 

1. zzzzzz - 18 Января, 2013 - 03:01:52 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => Array
  3.         (
  4.             [1] => 2
  5.         )
  6.  
  7.     [1] => Array
  8.         (
  9.             [1] => 2
  10.         )
  11.  
  12.     [2] => Array
  13.         (
  14.             [75] => 4
  15.         )
  16.  
  17.     [3] => Array
  18.         (
  19.             [103] => 1
  20.         )
  21.  
  22. )


как мне в переменную $test занести ключ-родитель ключа 103?
То бишь цифру 3
Заранее спасибо
2. createl - 18 Января, 2013 - 13:21:47 - перейти к сообщению
zzzzzz пишет:
как мне в переменную $test занести ключ-родитель ключа 103?
То бишь цифру 3
Заранее спасибо

Циклом foreach перебираешь массив, где обычным переменным, с произвольным названием, присваиваешь ключ массива и его значение для отдельно взятой итерации. Для значения пишешь условие, по которому ты определяешь на соответствие элемента массива твоим требованиям. Если элемент массива сам является массивом, как в твоем случае, то наверное
придется сделать вложенный цикл foreach для перебора этого массива. Тут уже в зависимости от того, что именно тебе требуется узнать об этом элементе. Возвращаемся к условию - если оно истинно, то присваиваешь $test значение переменной, в которую у тебя помещается значение индекса массива
Как то так...
PHP:
скопировать код в буфер обмена
  1. foreach ($array as $key => $value)
  2. {
  3.         if (то_что_надо($value)) $test = $key;
  4.        
  5. }
  6.  
3. sKaa - 18 Января, 2013 - 13:26:22 - перейти к сообщению
если ключ заранее известен ничего перебирать не нужно.


а оно по-любому известно, иначе как создать условие внутри
createl пишет:
отдельно взятой итерации


))))
4. createl - 18 Января, 2013 - 14:46:45 - перейти к сообщению
sKaa пишет:
если ключ заранее известен ничего перебирать не нужно.


а оно по-любому известно, иначе как создать условие внутри
createl пишет:
отдельно взятой итерации


))))

Человек просит в переменную именно название ключа
zzzzzz пишет:
То бишь цифру 3

А если он заранее известен, то еще проще Радость
PHP:
скопировать код в буфер обмена
  1. $test = 3;
5. sKaa - 18 Января, 2013 - 14:50:04 - перейти к сообщению
Я очень невнимательно читаю бывает, что нужно топикстартерам.

6. zzzzzz - 18 Января, 2013 - 17:44:13 - перейти к сообщению
Массив который я привел, это супер глобальный $_SESSION['basket'] (т.е корзина магазина), где 103 - это id товара, а 1-это количесво товара попавшего в корзину.

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

PHP:
скопировать код в буфер обмена
  1. $basket = $_SESSION['basket'];
  2. foreach ($basket as $basket) {
  3.   foreach ($basket as $id=>$amount) {
  4.     $result = mysql_query("SELECT pid,sku,name,price FROM product WHERE id='$id'");
  5.     $assoc = mysql_fetch_assoc($result);
  6.          print "<tr>
  7.                  <td>$id</td>  
  8.                  <td>$assoc['name']</td>
  9.                  <td>$amount</td>
  10.                  <td>$assoc['price']</td>
  11.                  <td>$assoc['price'] * $amount</td>
  12.                  <td><form action="$_SERVER['PHP_SELF']" method="post">
  13.                           <input name="numArray" type="hidden" value="$id"/>
  14.                           <input name="removeFromBasket" type="submit" value="Удалить"/>
  15.                         </form>
  16.                </td>
  17.                 </tr>";
  18.         }
  19. }



И мы видим что корзина работает и все четко, НО как теперь удалить ненужный товар из корзины, так unset($_SESSION['basket'][тут ключ]) ??? но вот как получить ключ, засунуть его в скрытый input чтобы ПОСТом отправить в функцию где и удалится ненужный товар попавший в корзину
7. zzzzzz - 19 Января, 2013 - 15:45:11 - перейти к сообщению
sKaa ваш вариант array_search не работает, может потому-что массив многомерный да и искать мы дол;ны по value а тут по key. короче говоря в $test не попало число 3

 

Powered by ExBB FM 1.0 RC1