Всем здрасте!
Есть массив:
$data = array(
0 => array(
"name"=>"Иванов",
"email_1"=>"ivanov_1@mail.ru"
),
1 => array(
"name"=>"Иванов",
"email_2"=>"ivanov_2@mail.ru"
),
2 => array(
"name"=>"Петров",
"email_1"=>"petrov_1@mail.ru"
),
3 => array(
"name"=>"Петров",
"email_2"=>"petrov_2@mail.ru"
),
);
Возможно ли вывести в цикле, чтоб вместо одного из значений, - если один раз уже выводилось, - была пустая строка (в данном случае фамилия)?
Чтоб в итоге получилось:
Иванов: ivanov_1@mail.ru
ivanov_2@mail.ru
Петров: petrov_1@mail.ru
petrov_2@mail.ru
Игорь_Vasinsky
21.01.2013 - 14:36
foreach($data as $key=>$val){
if(isset($val['email']))
echo $val['name'].': '.$val['email'].'<br />';
else
echo $val['phone'].'<br />';
}
Иванов: ivanov@mail.ru
123456
Петров: petrov@mail.ru
567891
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
21.01.2013 - 14:41
$table = '<table>';
foreach($data as $key=>$val){
if(isset($val['email']))
$table .= '<tr><td>'.$val['name'].':</td><td>'.$val['email'].'</td></tr>';
else
$table .= '<tr><td></td><td>'.$val['phone'].'</td></tr>';
}
$table .= '</table>';
echo $table;
Иванов: ivanov@mail.ru
123456
Петров: petrov@mail.ru
567891
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Ой, сорри! Неправильно написал задачу .
отредактировал.
inpost
21.01.2013 - 15:34
Создай переменную, куда будешь помещать значение из итерации цикла, тогда как при следующей итерации сравнивай, а не равняется ли нынешнее значение значению из прошлой итерации, и если равно - не выводить.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
killer8080
21.01.2013 - 15:45
$data = array(
0 => array(
"name"=>"Иванов",
"email_1"=>"ivanov_1@mail.ru"
),
1 => array(
"name"=>"Иванов",
"email_2"=>"ivanov_2@mail.ru"
),
2 => array(
"name"=>"Петров",
"email_1"=>"petrov_1@mail.ru"
),
3 => array(
"name"=>"Петров",
"email_2"=>"petrov_2@mail.ru"
),
);
$group_data = array();
foreach($data as $v)
$group_data[$v['name']] []= next($v);
echo '<pre>'.print_r($group_data, 1).'</pre>';
Игорь_Vasinsky
21.01.2013 - 15:46
Цитата |
$group_data = array(); foreach($data as $v) $group_data[$v['name']] []= next($v);
echo '<pre>'.print_r($group_data, 1).'</pre>'; |
зачёт
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080, глова уже не соображает. Рrint_r выводит многомерный массив так как надо, а в html - не получается вывести это дело через foreach.
Игорь_Vasinsky
21.01.2013 - 17:03
обычный foreach для многомерного массива
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
borland
21.01.2013 - 17:07
Я в таких случаях юзаю array_unique и избегаю гемороя=)
http://php.net/manual/en/function.array-unique.php
$data = array_unique($array);
foreach($data as $v) {
echo $v;
}
Игорь_Vasinsky
21.01.2013 - 17:08
и что это даст в конкретной задаче?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Тут ещё один момент. А если кроме "name" надо избежать ещё одно повторение, - например "adress"? Если его тоже вывести с именем надо?:
$data = array(
0 => array(
"name"=>"Иванов",
"adress"=>"Навозная",
"email"=>"ivanov_1@mail.ru"
),
1 => array(
"name"=>"Иванов",
"adress"=>"Навозная",
"email"=>"ivanov_2@mail.ru"
),
2 => array(
"name"=>"Петров",
"adress"=>"Болотная",
"email"=>"petrov_1@mail.ru"
),
3 => array(
"name"=>"Петров",
"adress"=>"Болотная",
"email"=>"petrov_2@mail.ru"
),
);
Игорь_Vasinsky
21.01.2013 - 17:23
Lutsk
а ещё что?
так и будешь после каждого решения условия добавлять?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Нет, просто разобраться хочу. Наверняка при извлечении из базы данных часто в массив заносятся одинаковые значения полей (внешние ключи, например), которые надо вывести только один раз. Вот и спрашиваю.
Думаю, в моём случае это не единственный случай?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.