С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
n0kk
0 / 0 / 1
Регистрация: 31.12.2014
Сообщений: 188
1

Узнать переменные равные 0?

03.02.2016, 07:33. Просмотров 802. Ответов 7
Метки нет (Все метки)

Доброе время суток всем, у меня возник такой вопрос, я получаю ассоциативный массив с данными, затем вывожу все переменные функцией extract(), как можно узнать переменные равные 0?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2016, 07:33
Ответы с готовыми решениями:

Запись из формы данных в переменные php файла, данные из переменные используются в других файлах сайта
Всем привет! Ребят, подскажите пожалуйста! Есть один файл с обычной html...

Разбор строки на равные части
помогите плз новичку разобраться! есть одна строка в файле .тхт с N...

Используя цикл, сделать строки равные по длине
Нужно зашифровать текст с ключом: тескт - $a="Наша строка длиннее, чем сам...

Embarcadero RAD Studio XE.Равные переменные типа real оказываются для Embarcadero не равными
Все переменные типа real.Вне зависимости от действительного равенства full...

Узнать все переменные передающие в функцию
Как узнать все переменные передающие в функцию? Многие для этого используют IDA...

7
Mikhail_Z
1 / 1 / 0
Регистрация: 30.01.2016
Сообщений: 6
03.02.2016, 08:23 2
Не считаю себя программистом, но на мой взгляд, проще в массиве найти переменные равные 0. Это элементарно.
Если принципиально нужно работать именно с переменными, то их нужно поочередно сравнивать с 0. Возможно, для этого их снова потребуется собрать в массив
Так как, насколько я понимаю, в массиве элементов может быть сколько угодно.
Если число переменных известно и постоянно, известны их имена - то тогда все просто - сравнивайте с 0 хоть if/else, хоть switch-case

А вообще, поподробнее бы задачу изложили бы...
1
n0kk
0 / 0 / 1
Регистрация: 31.12.2014
Сообщений: 188
03.02.2016, 10:37  [ТС] 3
Смысл в том что мне необходимо как то отделить переменные равные нулю, и нужно вывести переменные со значением больше нуля, и да вы сказали правильно их может быть неопределенное количество

Добавлено через 7 минут
Проходить по массиву с помощью foreach и сравнивать каждое значение с 0?
0
Lazy_Den
2981 / 2643 / 1334
Регистрация: 15.01.2014
Сообщений: 5,802
03.02.2016, 10:58 4
Цитата Сообщение от n0kk Посмотреть сообщение
как можно узнать переменные
только если импорт был с добавлением префикса:
PHP
1
2
3
4
5
6
7
8
9
<?php
$arr = [
    0 => 'Zero',
    1 => 'Unit'
];
extract($arr, EXTR_PREFIX_INVALID, 'pfx');
 
echo $pfx_0; // Zero
echo $pfx_1; // Unit
Добавлено через 1 минуту
P.S. Из документации:
использование числовых массивов не приведёт ни к каким результатам, если вы не используете EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID
1
Jodah
Эксперт PHP
2850 / 2481 / 1057
Регистрация: 01.08.2012
Сообщений: 8,773
03.02.2016, 11:03 5
Лучший ответ Сообщение было отмечено n0kk как решение

Решение

Цитата Сообщение от n0kk Посмотреть сообщение
отделить переменные равные нулю
Отделить = удалить?
PHP
1
2
3
foreach($vars as $key => $var)
    if(!$var)
        unset($vars[$key]);
1
n0kk
0 / 0 / 1
Регистрация: 31.12.2014
Сообщений: 188
03.02.2016, 11:17  [ТС] 6
Jodah, Да, спасибо, извиняюсь что не точно написал, именно, удалить ключи со значением 0, спасибо за подсказку
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
03.02.2016, 11:34 7
Как вариант:
PHP
1
2
3
4
    $array = [1,2,3,4,5,0,0,6,7,8,9];
    
    # Отсеиваем все значения, приводящиеся к "false"
    $array = array_filter($array);
В итоге получим массив, освобождённый от нулевых значений.

Добавлено через 2 минуты
Только я не понимаю, как Вы используете переменные после extract, если некоторые могут оказаться после отсеивания не объявленными.
Наличие каждой проверять, что-ли?
0
n0kk
0 / 0 / 1
Регистрация: 31.12.2014
Сообщений: 188
03.02.2016, 11:52  [ТС] 8
Para bellum, имена переменных мне известны, они потом идут в базу данных, хочу отделить их от переменных равных нулю что бы вывести потом в html, вообщем вот код полностью, возможно намудрил лишнего, но к сожалению в php и mysql совсем новичок, не судите строго
PHP
1
2
3
4
5
6
7
8
if (isset($_POST['coctailslist'])) {$coctailslist = $_POST['coctailslist'];} 
if (isset($_POST['quan'])) {$quan = $_POST['quan'];}
$result = $conn->query("SELECT * FROM $coctailslist");
$row = $result->fetch_assoc();
$allalco = array('cola'=>'0', 'rumwhite' =>'0', 'vodka'=>0, 'tequilasilver'=>0, 'jin'=>0, 'tonik'=>0);
$res = array_merge($allalco , $row);
extract ($res);
$result2=$conn->query("INSERT INTO allalco (cola, rumwhite, vodka, tequilasilver, jin, tonik) VALUES ($cola*$quan, $rumwhite*$quan, $vodka*$quan, $tequilasilver*$quan, $jin*$quan, $tonik*$quan)");
Похоже я намудрил лишнего, в начале же массив был без 0, надо значит перед слиянием просто вывод сделать переменных похоже
0
03.02.2016, 11:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2016, 11:52

Как узнать внутренние переменные windows?
Как узнать внутренние переменные windows например path

Узнать переменные заголовков и содержимого Livejournal
Как узнать переменные заголовков и содержимого записи Livejournal? Только не...

Хочу узнать больше про переменные со сроком действия
вот мой код. сейчас читаю тему про переменные внутри блока кода в данном случае...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru