[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Одинаковые значения в ассосиацивном массиве
Страницы: 1, 2
Lutsk
Всем здрасте!
Есть массив:
$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
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
$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
Lutsk
Ой, сорри! Неправильно написал задачу .
отредактировал.
inpost
Создай переменную, куда будешь помещать значение из итерации цикла, тогда как при следующей итерации сравнивай, а не равняется ли нынешнее значение значению из прошлой итерации, и если равно - не выводить.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
killer8080
$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
Цитата
$group_data = array();
foreach($data as $v)
    $group_data[$v['name']] []= next($v);

echo '<pre>'.print_r($group_data, 1).'</pre>';


зачёт wink.gif

_____________
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
Lutsk
Кажись оно, - спасибо!
Lutsk
killer8080, глова уже не соображает. Рrint_r выводит многомерный массив так как надо, а в html - не получается вывести это дело через foreach.
Игорь_Vasinsky
обычный 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
Я в таких случаях юзаю array_unique и избегаю гемороя=)
http://php.net/manual/en/function.array-unique.php


$data = array_unique($array);
foreach($data as $v) {
echo $v;
}
Игорь_Vasinsky
и что это даст в конкретной задаче?


_____________
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
Lutsk
Тут ещё один момент. А если кроме "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
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
Lutsk
Нет, просто разобраться хочу. Наверняка при извлечении из базы данных часто в массив заносятся одинаковые значения полей (внешние ключи, например), которые надо вывести только один раз. Вот и спрашиваю.
Думаю, в моём случае это не единственный случай?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.