Функция PHP вытягивает массив, соответствующий параметру - PullRequest
0 голосов
/ 10 января 2012
$youtubes = array("lNT4H39G2rw","pF2_qvdm8DQ","_8ytwhhJwco","K16ZRFWR2Mc","9WuPxe7zc6Q","rXZIIclPnd0","J8ZwyN6E3_Q","OEWJbsh0z-4","o62-X0stdFM","aIIiww2Neq0","5TJc-VbNYg0","MYQa1Tgw_z8","alxzFm-bqug","UmI7oyllrlY","RGKFXDHFmn4");

function randomFromArray($data) {
    global $$data;
    echo $$data[rand(0,count($youtubes)-1)];
}

randomFromArray("youtubes");

Я пытаюсь заставить это работать как функцию, поэтому я могу ввести имя массива в качестве параметра. Затем предполагается выводить случайную запись из массива. Бит, где он получает случайную запись из массива, работает сам по себе, если я подставлю его прямо, но я не могу заставить его работать как функцию.

Любая помощь?

Ответы [ 6 ]

2 голосов
/ 10 января 2012

Вы используете имя переменной $youtubes в функции randomFromArray при вызове count (но переменная там не доступна под этим именем).

Кстати, зачемВы передаете (ссылку на) массив вместо его имени?Было бы намного аккуратнее, чем использовать global $$data;Следующий код использует ссылку, чтобы избежать копирования массива (но помните, что внешний массив может быть изменен изнутри метода):

$youtubes = // ...

function randomFromArray(&$data) {
    echo $data[rand(0,count($data)-1)];
}

randomFromArray($youtubes);
1 голос
/ 10 января 2012
$youtubes = array("lNT4H39G2rw","pF2_qvdm8DQ","_8ytwhhJwco","K16ZRFWR2Mc","9WuPxe7zc6Q","rXZIIclPnd0","J8ZwyN6E3_Q","OEWJbsh0z-4","o62-X0stdFM","aIIiww2Neq0","5TJc-VbNYg0","MYQa1Tgw_z8","alxzFm-bqug","UmI7oyllrlY","RGKFXDHFmn4"); 

function randomFromArray($data) { 
    echo $data[rand(0,count($data)-1)]; 
} 

randomFromArray($youtubes); 
1 голос
/ 10 января 2012

Вы передаете строку 'youtubes' в функцию, а не в массив. Вы хотите передать имя массива:

randomFromArray($youtubes);
1 голос
/ 10 января 2012

не вызывайте функцию randomFromArray ("youtubes"); таким образом вы вызываете функцию с параметром youtubes как строку. и внутри самой функции у вас нет переменной $ youtubes. вызвать функцию, подобную этой randomFromArray ($ youtubes); надеюсь, это поможет

0 голосов
/ 10 января 2012

После того, как вы поставили ; после global $$data, вы можете попробовать это: $f = $$data; и затем echo $f[rand(..)];, если вы действительно хотите использовать имена вместо переменных, как предлагали другие. И если вы сделаете это, вы можете использовать строку (или $ f) далее в коде функции.

0 голосов
/ 10 января 2012

Здесь некоторые вещи в корне неверны.

global $$data Почему двойной знак $? И откуда будут поступать эти данные?

echo $$data[rand(0,count($youtubes)-1)]; Ваша функция не знает переменную $ youtubes, так как вы никогда не определяли ее внутри функции. Все, что знает ваша функция - это переменная $data, которую вы ей передаете.

randomFromArray("youtubes"); Вы передаете строку своей функции, а не массиву. Вы, вероятно, хотите вместо этого:

randomFromArray($youtubes); // Pointing to your actual array, rather then a string

Попробуйте сначала прочитать PHP-функции , прежде чем пытаться их использовать, поскольку вам не хватает базовых знаний о них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...