Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как объединить два массива?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Exponat
Отправлено: 27 Января, 2016 - 12:12:03
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Здравствуйте.
Есть два массива:
1)
PHP:
скопировать код в буфер обмена
  1. <pre><?var_dump($arResult["UF_GAL"]);?></pre>

PHP:
скопировать код в буфер обмена
  1. array(3) {
  2.   [0]=>
  3.   string(3) "611"
  4.   [1]=>
  5.   string(3) "612"
  6.   [2]=>
  7.   string(3) "613"
  8. }

2)
PHP:
скопировать код в буфер обмена
  1. <pre><?var_dump($arResult["UF_DESCPHOTO"]);?></pre>

PHP:
скопировать код в буфер обмена
  1. array(3) {
  2.   [0]=>
  3.   string(11) "Слайд1"
  4.   [1]=>
  5.   string(11) "Слайд2"
  6.   [2]=>
  7.   string(11) "Слайд3"
  8. }


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

Должно быть в таком виде: <img src="<?=$data["src"]?>" alt="<?=$data["descript"]?>" />

$data["src"] это значение первого массива а $data["descript"] это значение со второго массива и чтоб они шли по порядку, как бы слились.

Спасибо!
(Добавление)
Получилось соединить так:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $array1 = array ("src" => $arResult["UF_GAL"]);
  3. $array2 = array ("desc" => $arResult["UF_DESCPHOTO"]);
  4. $result = array_merge ($array1, $array2);?>
  5. <pre>
  6. <?
  7. print_r($result);
  8. ?>
  9. </pre>

PHP:
скопировать код в буфер обмена
  1. (
  2.     [src] => Array
  3.         (
  4.             [0] => 611
  5.             [1] => 612
  6.             [2] => 613
  7.         )
  8.  
  9.     [desc] => Array
  10.         (
  11.             [0] => Слайд1
  12.             [1] => Слайд2
  13.             [2] => Слайд3
  14.         )
  15.  
  16. )


Но какой теперь форич сделать чтоб вывести эти данные вместе?

(Отредактировано автором: 27 Января, 2016 - 13:25:05)

 
 Top
TuX560
Отправлено: 27 Января, 2016 - 13:27:09
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




Exponat пишет:
Как мне в фориче правильно их вывести для полноценного вывода изображений?

1. Использовать for
2. Запихать их в двумерный массив
 
 Top
Exponat
Отправлено: 27 Января, 2016 - 13:40:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Пробую выводить так:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $i=0;
  3. foreach($result as $key => $value)
  4.   {
  5.     $i++;?>
  6.     <?=$key = $value[$i];?> <?}?>

Но почему-то выводит последнее значение:


Может тут еще while надо?
(Добавление)
Вообщем получилось как-то так, но не уверен нормальное ли это решение:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $array1 = array ("src" => $arResult["UF_GAL"]);
  3. $array2 = array ("desc" => $arResult["UF_DESCPHOTO"]);
  4. $result = array_merge ($array1, $array2);
  5. ?>
  6.  
  7. <?foreach($result as $key => $value)
  8.   {
  9.     foreach($value  as  $inner_key => $values)
  10.       {
  11.         if ($key == src) {
  12.         echo "$values";
  13.         }?>
  14.   <br/>
  15.       <?
  16.         if ($key == desc) {
  17.         echo "$values";
  18.         }
  19.       }
  20.   }
  21. ?>
 
 Top
TuX560
Отправлено: 27 Января, 2016 - 16:00:34
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




Exponat пишет:
Вообщем получилось как-то так

Вообщем читать материал по ссылкам так и не научились...
Еще раз повторю:
1. использовать один for по имеющейся у Вас в данный момент структуре
2. хранить в формате
PHP:
скопировать код в буфер обмена
  1.     array('src' => 'http://url1', 'desc' => 'бла бла бла'),
  2.     array('src' => 'http://url2', 'desc' => 'бла бла бла'),
  3.     ...
  4.     array('src' => 'http://urln', 'desc' => 'бла бла бла'),
  5. );
 
 Top
Flash_PR
Отправлено: 27 Января, 2016 - 17:41:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013  
Откуда: Санкт-Петербург


Помог: 6 раз(а)




Вообще странно что это проблема. Есть несколько способов ее решения.

1.Если в первом массиве имена файлов уникальны, и ключи массивов соответствуют друг другу, то можно попробовать функцию array_combine() применить, в результате получиться один массив, где ключ будет имя файла, значение описание файла.
2. Пройтись форечем по одному массиву, попутно беря данные из второго массива. Ключи в обоих массивах должны соответствовать имя файла, описание.
3. Пройтись по одному массиву, и создать новый массив удобно сформировав данные.

(Отредактировано автором: 27 Января, 2016 - 17:46:12)



-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
magicoder
Отправлено: 29 Января, 2016 - 16:53:08
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Flash_PR пишет:
Вообще странно что это проблема. Есть несколько способов ее решения.

1.Если в первом массиве имена файлов уникальны, и ключи массивов соответствуют друг другу, то можно попробовать функцию array_combine() применить, в результате получиться один массив, где ключ будет имя файла, значение описание файла.
2. Пройтись форечем по одному массиву, попутно беря данные из второго массива. Ключи в обоих массивах должны соответствовать имя файла, описание.
3. Пройтись по одному массиву, и создать новый массив удобно сформировав данные.


Абсолютно согласен. array_combine подойдет
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB