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. goooooch - 06 Февраля, 2015 - 12:12:05 - перейти к сообщению
Всем привет.

В ассоциативном массиве мне нужно найти порядковый номер элемента по его ключу (чтобы разложить элементы массива по ячейкам html-таблицы).

Пишу простенькую функцию, которая бегает по массиву

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. function get_position($arr, $key)
  4.         {
  5.         $position = 1;                                 
  6.         foreach ($arr as $val => $arrCont)
  7.                 {
  8.                         if ($key == $val)
  9.                                 {
  10.                                         $position = 1;
  11.                                 }
  12.                         else
  13.                                 {
  14.                                         $position = $position +1;
  15.                                 }
  16.                         return $position;
  17.                 }                                      
  18.         }
  19. ?>     
  20.  


Проверяю таким образом:
PHP:
скопировать код в буфер обмена
  1.                        
  2. <?
  3. $arr = array (
  4. "key1" => "val1",
  5. "key2" => "val2",
  6. "key3" => "val3",
  7. "key4" => "val4");
  8. //print_r(array_reverse($arr));
  9. $arr = array_reverse($arr);
  10. $key = 'key3';
  11. $pos = get_position($arr, $key);
  12. echo $pos;
  13. ?>
  14.  


Обнаруживаю, что функция выдает порядковый номер элемента с конца! "Переворачиваю" массив с помощью array_reverse — все ок.

Работает и ладно, можно было бы не разбираться. Но все-таки... Особенность цикла foreach? Он с конца начинает перебор?
2. Мелкий - 06 Февраля, 2015 - 12:18:35 - перейти к сообщению
Массивы PHP - двусвязный список.
Foreach ходит непосредственно по этому двусвязному списку.
Между ключом и порядком обхода никакой взаимосвязи вообще нет.

А функция у вас очень странная. Она может вернуть только 1 или 2.

 

Powered by ExBB FM 1.0 RC1