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 :: Версия для печати :: на что заменить return чтобы значения пол.функции (весь массив) вернулось но не прерывалось
Форумы портала PHP.SU » » Вопросы новичков » на что заменить return чтобы значения пол.функции (весь массив) вернулось но не прерывалось

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

1. bustez - 07 Февраля, 2015 - 19:30:57 - перейти к сообщению
есть файл в котором храниться инфо. Я вывожу все в строку после
разделяю остается массив, я его перебираю и мне нужно возвратить значение всего массива не просто вывести возвратить значения, т.к. далее это значение присваиваю переменной и т.д. но вернуть значения можно return но оно по док. останавливает и выводит первое значение перебранного массива. Функция list т.к колличество перебираемых будет постоянно менятся (приходят) из формы! как можно вернуть значения чтобы они все вернулись?
PHP:
скопировать код в буфер обмена
  1.  
  2. /*
  3.  *
  4.  *
  5.  *
  6.  *функция вывода файла на экран
  7.  */
  8.         function get_file(){
  9.                 $massGet = file_get_contents('inc/test.txt');//строка
  10.                 $mass = explode("|||", $massGet);//разбит на массивы
  11.                 foreach($mass as $m){//перебираем
  12.                 return $m;
  13.                 }
  14. }
  15. //get_file();//выводим
  16.  
2. Wooorker - 07 Февраля, 2015 - 19:43:38 - перейти к сообщению
bustez пишет:
как можно вернуть значения чтобы они все вернулись?

PHP:
скопировать код в буфер обмена
  1.  
  2.                 $massGet = file_get_contents('inc/test.txt');//строка
  3.                 $mass = explode("|||", $massGet);//разбит на массивы
  4.                 return $mass;
  5. }
  6.  
3. bustez - 07 Февраля, 2015 - 19:47:08 - перейти к сообщению
ВЫВОДИТ ТОЛЬКО ПЕРВЫЙ ЭЛЕМЕНТ МАССИВА

вот полный пример
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. function bnm(){
  5. $ass = array(1,2,3,4,5,6,7,8,9);
  6. foreach($ass as $a){
  7. return $a;
  8. }
  9.  
  10. }
  11. echo bnm();  // ВЫВОДИТ 1 (а нужно 123456789)
  12.  
  13.  

(Добавление)
вы правильно написали, но ведь мне нужно чтобы созданная мной функция вернула уже перебранный массив
4. armancho7777777 - 07 Февраля, 2015 - 22:23:22 - перейти к сообщению
5. exlant - 08 Февраля, 2015 - 22:58:21 - перейти к сообщению
return возвращает что то и выбрасывает из тела функции, соответственно нужно с начало перебрать массив, если нужно, а потом вывести перебранный массив
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($ass as $a){
  3. $new_array[] = $a
  4. // делаем что то с массивом
  5. }
  6. return $new_array; // возвращаем новый массив
  7.  
  8.  

если под словом вывести имелось ввиду - вывести на экран, то можно и так
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array(1,2,3,4,5,6,7,8,9);
  3. function print_array($ass)
  4. foreach($ass as $a){
  5. echo $a;
  6.  
  7. }
  8. print_array($array);
  9.  
  10.  
6. qtk - 09 Февраля, 2015 - 21:02:40 - перейти к сообщению
exlant пишет:
return возвращает что то и выбрасывает из тела функции, соответственно нужно с начало перебрать массив, если нужно, а потом вывести перебранный массив
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($ass as $a){
  3. $new_array[] = $a
  4. // делаем что то с массивом
  5. }
  6. return $new_array; // возвращаем новый массив
  7.  
  8.  

если под словом вывести имелось ввиду - вывести на экран, то можно и так
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array(1,2,3,4,5,6,7,8,9);
  3. function print_array($ass)
  4. foreach($ass as $a){
  5. echo $a;
  6.  
  7. }
  8. print_array($array);
  9.  
  10.  
ваш код возвращает такой же массив как тот который перебирает))))
(Добавление)
PHP:
скопировать код в буфер обмена
  1. function bnm(){
  2. $ass = array(1,2,3,4,5,6,7,8,9);
  3. foreach($ass as $a){
  4. $b .= $a;
  5. }
  6.  return $b;
  7. }
  8. echo bnm();  // ВЫВОДИТ 123456789)
7. exlant - 10 Февраля, 2015 - 02:23:38 - перейти к сообщению
Цитата:
ваш код возвращает такой же массив как тот который перебирает))))

а я там и не собирался выводить, какой то другой массив)))

просто ТС return вложил в цикл, и хотел так вывести массив, а return выбрасывает из функции, а способов вывода массива(ов) из функции, тьма тьмущая, все зависит от ситуации!

 

Powered by ExBB FM 1.0 RC1