Проблема с 1мерным массивом.

Статус
В этой теме нельзя размещать новые ответы.

gorchakov

Новичок
Проблема с 1мерным массивом.

Пишу этот листинг из книги. По идее функция getRandArray должна заполнять массив десятью случайными числами. а потом переменной arr1 и arr2 присваиваются результату выполнения функции. и потом выводятся на экран.

У меня же результат выполнения такой:

Array
Array


А вот сам листинг.
PHP:
<?php

/**
 * @author maxim
 * @copyright 2009
 */
 $arr1=0;
 $arr2=0;
function &getRandArray()
{
	$a=array();
	for($i=0; $i<10; $i++)
	{
		$a[]=rand(1,100);
	}
	return($a);
}
$arr1=&getRandArray();
print("$arr1 <br>\n");
$arr2=&getRandArray();
print("$arr2 <br>\n");
?>
 

Balancer

Новичок
Если нужно вывести массив, то:

print_r($arr1);

или

var_dump($arr1);

или

echo join(",", $arr1);
 

gorchakov

Новичок
т.е. неважно какие числа были записаны в массив - при преобразовании он все равно превратится в слово Array?

а как сделать чтобы он цифры показал, те которые функцией getRandArray в него занесены?

-~{}~ 08.02.09 17:11:

спс. сейчас попробую

-~{}~ 08.02.09 17:16:

Спасибо все работает..
 

Фанат

oncle terrible
Команда форума
для работы с массивами придумали циклы.
рекомендую тебе с ними тоже познакомиться.
 

Balancer

Новичок
>для работы с массивами придумали циклы.

В основном для работы с массивами придумали array_* функции :) С ними зачастую и быстрее и нагляднее получается. Хотя, да, нередко циклы, как правило, foreach, незаменимы.
 

Фанат

oncle terrible
Команда форума
Balancer, рекомендую читать вопросы перед тем, как на них отвечать. Так у тебя будет шанс выставить себя в положительном свете, а не наоборот.
 

Balancer

Новичок
>Balancer, рекомендую читать вопросы перед тем, как на них отвечать.

Какой конкретно вопрос? В первом сообщении я вопроса чётко поставленного не вижу. В утверждении «для работы с массивами придумали циклы.» вопроса тоже нет.

Так что мне внимательнее читать надо? Поясни.
 

Фанат

oncle terrible
Команда форума
Если ты не понял вопроса, то тем более не надо отвечать на него. Логично?
 

Balancer

Новичок
Я понял вопрос, но, видимо, не так, как ты.

В исходной теме, поскольку явно вопрос не задавался, видны два вопроса.

1. Почему массив в строке превращается в "Array".

2. Как вывести массив.

На первое ответ был дан до меня.

На второе ответил я.

А какой вопрос в теме виделся тебе? От тебя тут пока только какие-то придирки, и никакой конкретики.
 

Фанат

oncle terrible
Команда форума
Придирки часто важнее конкретики.
Придирки заставляют думать, а конкретика - наоборот.
Все предложенные тобой методы вывода массива, разумеется, не имеют никакой практической ценности. Такой туповатый, в стиле негритянских комедий, буквальный ответ на вопрос. Наверное, если человек не знает, как вывести массив, то ему надо рассказать про циклы? Попробуй понять, что местные посетители находятся не на одном с тобой уровне.
 

gorchakov

Новичок
я про циклы знаю. и как с помощью цикла вывести массив тоже знаю. Просто я не знал этого свойства преобразования массивов, если массив ошибочно использовался как строка, как у меня в примере.

К сожалению это мой косяк - я не дочитал про эти свойства преобразования.
 

Фанат

oncle terrible
Команда форума
если ты знал, как с помощью цикла вывести массив, то почему этого не сделал?
 

gorchakov

Новичок
потому что догадывался про наличие какой то втсроеной функции вывода массива. попробовал print - а тут слово array вместо чисел....
 

Фанат

oncle terrible
Команда форума
ну хорошо, print не сработал. а после этого почему ты не воспользовался циклом?
 

Активист

Активист
Команда форума
gorchakov
Ты учись учись, не обижайся на строгих дяденег программеров.

> я не знал этого свойства преобразования массивов, если массив
> ошибочно использовался как строка

И не надо. Если массив ошибочно используется как строка - то это кривые руки и грубейшие ошибки в коде. Ни в коем случае не нужно так поступать. Ты должен наверняка знать что у тебя в переменной - массив, строка или целое число (и т.д.) . Если ты заранее не знаешь, что у тебя в переменной используй функции, такие как
[m]is_array[/m]

print_r и var_dump не служат, для указанных тобой целей, они служат для отладки кода, для вывода на экран значения перемены у удобочитаемом виде.

Balancer
> Так у тебя будет шанс выставить себя в положительном свете, а
> не наоборот.
+1
 

gorchakov

Новичок
Автор оригинала: *****
ну хорошо, print не сработал. а после этого почему ты не воспользовался циклом?
потому что интересен был факт слово Array) интересно было откуда оно вылазит?

Я совсем не обижаюсь.
 

dimagolov

Новичок
вылазит из toString. потому что происходит неявное преобразование переменной (тут массив) в строку.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху