Удаление из массива со значением равным нулю

d1mmas

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

Вот пример кода который я состряпал

$countm = 1;
$countp = 0;
$counts = 0;
$countv = 1;

$mass = array($countm, $countp, $counts, $countv);

$key = array_search(0, $mass);
if ($key !== false)
{
unset($mass[$key]);
}

$rand_array = array_rand($mass, 1);
 

d1mmas

Новичок
они берутся из базы данных $countp = mysql_num_rows(mysql_query("SELECT id FROM news WHERE clx > 0 AND status = 0 "));
 

Фанат

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

И ради бога, никогда не пиши себе однострочников типа mysql_num_rows(mysql_query(

напиши себе функцию которая будет выполнять внутри себя несколько строк кода - и вот её и применяй
 

d1mmas

Новичок
Не совсем понял о чем ты говоришь))) Я новичек...
Или, может, тут нужно применять совсем не массив...
Задача такова, необходимо из четырех переменных выбрать те которые неравны нулю, а затем из этих переменных выбрать одну в случайном порядке. Помогите с кодом, просто моих знаний не хватает пока)
 

Фанат

oncle terrible
Команда форума
что непонятного в вопросе "остальные запросы какие"? Остальные переменные ты какими запросами получаешь?
 

d1mmas

Новичок
А все понял) Остальные переменные я получаю при помощи таких же запросов в Базу данных...
 

d1mmas

Новичок
При помощи таких:
$countm = mysql_num_rows(mysql_query("SELECT id FROM news WHERE clx > 0 AND status = 0"));
$countp = mysql_num_rows(mysql_query("SELECT id FROM pow WHERE clx > 0 AND status = 0 "));
$counts = mysql_num_rows(mysql_query("SELECT id FROM low WHERE clx > 0 AND status = 0 "));
$countv = mysql_num_rows(mysql_query("SELECT id FROM add WHERE clx > 0 AND status = 0 "));
 

Фанат

oncle terrible
Команда форума
перебирай свой массив в цикле и удаляй из него пустые значения
 

d1mmas

Новичок
Спасибо за подсказку я последовал совету и вот что получилось:

$mass = array($countm, $countp, $counts, $countv);

for ($i=0; $i<=count($mass); $i++)
{
if($mass[$i] == null)
{
unset($mass[$i]);
}
}

$rand_array = array_rand($mass,1);

Теперь мне надо создать условие, при котором сравниваться должны (со стороны массива) не ключ, соответствующий этому значению, ( со стороны переменной) не само значение 0,1,2.. , а сама переменная

if( $rand_array[0] == $countm)
{

}
elseif( $rand_array[0] == $countp)
{

}

Но ничего не выходит, подскажите новичку, что я делаю не так?
 

Фанат

oncle terrible
Команда форума
Теперь мне надо создать условие, при котором сравниваться должны (со стороны массива) не ключ, соответствующий этому значению, ( со стороны переменной) не само значение 0,1,2.. , а сама переменная
зачем? откуда у тебя вообще ключи взялись? с чего ты взял, что их сравниваешь?
тебе же просто случайное значение осталось получить?

$rand_array у тебя - не массив.
ты бы хоть раз в жизни в документацию заглянул. и посмотрел, как пользоваться функцией array_rand().
 
Сверху