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. netclan - 23 Сентября, 2013 - 11:34:52 - перейти к сообщению
Есть массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [Иван] => 0
  6.         )
  7.  
  8.     [1] => Array
  9.         (
  10.             [Николай] => 111
  11.         )
  12.  
  13.     [2] => Array
  14.         (
  15.             [Николай Иванович] => 21
  16.         )
  17.  
  18.     [3] => Array
  19.         (
  20.             [Алексей] => 13
  21.         )
  22.  
  23.     [4] => Array
  24.         (
  25.             [Сергей] => 14
  26.         )
  27.  

Хочу Вывести в нужном месте значение ключа Николай и делаю так:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo $named['Николай'];
  3.  

Кто подскажет, что не так?
2. Tek - 23 Сентября, 2013 - 11:43:43 - перейти к сообщению
Как я пронял named - массив масивов и значение "николай":

будите внимательнее.
3. netclan - 23 Сентября, 2013 - 12:03:24 - перейти к сообщению
Tek пишет:
Как я пронял named - массив масивов и значение "николай":

будите внимательнее.

Извиняюсь! А как тогда можно объединить все подмассивы?
4. Tek - 23 Сентября, 2013 - 12:08:31 - перейти к сообщению
netclan пишет:
Tek пишет:
Как я пронял named - массив масивов и значение "николай":

будите внимательнее.

Извиняюсь! А как тогда можно объединить все подмассивы?


пройтись по ним циклом например:

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($named as $name){
  3. $new_name = array_merge($name,$new_name);
  4. }
  5. var_dump($new_name);
  6.  
  7.  
5. esterio - 23 Сентября, 2013 - 12:13:23 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $array = array(
  2.         array('Иван' => 0),
  3.         array('Николай' => 111),
  4.         array('Николай Иванович' => 21),
  5.         array('Алексей' => 13),
  6.         array('Сергей' => 14),
  7. );
  8.  
  9. $array = call_user_func_array('array_merge', $array);
6. netclan - 23 Сентября, 2013 - 12:54:50 - перейти к сообщению
Tek пишет:

пройтись по ним циклом например:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($named as $name){
  3. $new_name = array_merge($name,$new_name);
  4. }
  5. var_dump($new_name);
  6.  
  7.  


Сделал так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $new_name = array();
  3. foreach($named as $name){
  4. $new_name = array_merge($name,$new_name);
  5. }
  6. var_dump($new_name);
  7. print_r($new_name);
  8.  

Получилось следующее:

PHP:
скопировать код в буфер обмена
  1. array(5) {
  2.   ["Сергей"]=>
  3.   string(1) "14"
  4.   ["Алексей"]=>
  5.   string(1) "13"
  6.   ["Николай Иванович"]=>
  7.   string(1) "21"
  8.   ["Николай"]=>
  9.   string(1) "111"
  10.   ["Иван"]=>
  11.   string(1) "0"
  12. }
  13. 2Array
  14. (
  15.     [Сергей] => 14
  16.     [Алексей] => 13
  17.     [Николай Иванович] => 21
  18.     [Николай] => 111
  19.     [Иван] => 0
  20. )

Не понял, как так получается Не понял


Попробовал вариант:
esterio пишет:

$array = array(
$named
);
$array = call_user_func_array('array_merge', $array);
print_r($array);

получил на выходе тот же массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [Иван] => 0
  6.         )
  7.  
  8.     [1] => Array
  9.         (
  10.             [Николай] => 111
  11.         )
  12.  
  13.     [2] => Array
  14.         (
  15.             [Николай Иванович] => 21
  16.         )
  17.  
  18.     [3] => Array
  19.         (
  20.             [Алексей] => 13
  21.         )
  22.  
  23.     [4] => Array
  24.         (
  25.             [Сергей] => 14
  26.         )
  27.  )
  28.  

Что сделал не так?
7. esterio - 23 Сентября, 2013 - 13:30:59 - перейти к сообщению
netclan пишет:
получил на выходе тот же массив:

Не врите я же протестировал сначала, все отлично работает
8. Tek - 23 Сентября, 2013 - 14:01:15 - перейти к сообщению
Зачем вы оборачиваете все ещё в 1 массив?

явно не то.

Тоже проверил работают оба решения нормально.
9. netclan - 23 Сентября, 2013 - 14:06:22 - перейти к сообщению
[quote=Tek]Зачем вы оборачиваете все ещё в 1 массив?

явно не то.

Тоже проверил работают оба решения нормально.[/quote]

В первом случае все работает, я затупил с var_dump($new_name);

[quote=esterio][/quote]
Во втором случае, так же затупил, как вы уже отметили Все обернул еще в один массив!

Извиняюсь, спасибо за ответ! Еще такой вопрос, какое решение менее ресурсоемкое, если обрабатывать большой массив?
10. Tek - 23 Сентября, 2013 - 14:12:07 - перейти к сообщению
Думаю разница не велика, используйте решение esterio

 

Powered by ExBB FM 1.0 RC1