Как провернуть такое с массивом?

D
На сайте с 28.06.2008
Offline
976
476

Есть такой массив массивов


array(4) {
[0]=>
string(4) "1260"
[1]=>
string(4) "1281"
[2]=>
string(4) "1399"
[3]=>
string(4) "1442"
}
array(3) {
[0]=>
string(3) "199"
[1]=>
string(3) "491"
[2]=>
string(3) "666"
}

Порядок и группировка элементов в нем важна.

Вот что мне нужно.

1. Добавить к каждой цифре ссылку, чтобы получилось так

array(3) {
[0]=>
string(3) "/index.php?option=com_content&task=view&id=199"
[1]=>
string(3) "/index.php?option=com_content&task=view&id=491"
[2]=>
string(3) "/index.php?option=com_content&task=view&id=666"
}

как это сделать не разрушая сгруппированности я не знаю?

---------- Добавлено 13.06.2019 в 19:34 ----------

Все сделал......

fliger
На сайте с 17.09.2015
Offline
66
#1

Изучайте: https://php.net/manual/ru/language.types.array.php

G
На сайте с 24.05.2019
Offline
2
#2

Лучше спросить на каком-то программистском форуме.

а++
edogs software
На сайте с 15.12.2005
Offline
714
#3

Dram,

Вам бы прочитать, просто прочитать хотя бы 1 раз мануал по php, официальный. Не для того что бы все знать и все понять, а просто что бы понимать для каких задач уже есть штатные функции и где не надо ничего изобретать, а можно просто применить. Потому что одно дело когда вопрос вида "как заархивировать текст своим алгоритмом", а другое дело когда вопрос вида "как заменить букву а на б".

Не помним какая там у Вас версия php, в современных можно поэлегантнее, но в старых как-то так

<?php
$a=array();
$a[0]=array(1260,1281,1399);
$a[1]=array(199,491,666);
function addlink(&$value,$key) {
$value='/index.php?option=com_content&task=view&id=='.$value;
}

array_walk_recursive($a,'addlink');

var_dump($a);
?>
Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход.
P
На сайте с 26.10.2018
Offline
27
poc
#4

edogs, слишком сложно для новичка, он же потом не будет знать, как апгрейдить этот костыль)

Примерно так, скорее всего будет работать сразу. не было времени проверять.


foreach($massive as $m)
{foreach($massive[$m] as $k =>$v)
{
($massive[$m][$v] = ( '/index.php?option=com_content&task=view&id=' . $massive[$m][$v] );
};
};

Где $massive - исходный массив.

K0
На сайте с 16.05.2012
Offline
70
#5

$newarr = array_map(function($a){return '/index.php?option=com_content&task=view&id=' . $a;}, $arr);

Хотя, не понял что за массив у автора. Но через array_map всё равно реализовать можно :)

edogs software
На сайте с 15.12.2005
Offline
714
#6
kreat0r:
$newarr = array_map(function($a){return '/index.php?option=com_content&task=view&id=' . $a;}, $arr);

Хотя, не понял что за массив у автора. Но через array_map всё равно реализовать можно :)

Может стоило сначала понять? Потому что массив у автора мультиуровневый, а аррей_мэп работает только с 1 уровнем и в новом массиве будут запоротые данные.

---------- Добавлено 14.06.2019 в 03:21 ----------

poc:
edogs, слишком сложно для новичка, он же потом не будет знать, как апгрейдить этот костыль).
А костыль-то в чем? Прямое примение функции из мануала по назначению. И по коду сразу будет видно "что происходит", без вникания во вложенный цикл.
P
На сайте с 26.10.2018
Offline
27
poc
#7
edogs:
А костыль-то в чем? Прямое примение функции из мануала по назначению. И по коду сразу будет видно "что происходит", без вникания во вложенный цикл.

Очевидно, автор что-то подсаживает на жумлу)

Костыль скорее всего в том, что это промежуточные данные, которые можно в финальный вид привести сразу в момент генерации

D
На сайте с 28.06.2008
Offline
976
#8
Dram:

Все сделал......

Всем спасибо, наверное это надо было выделить жирным, я ведь сделал все еще до первого сообщения

foreach ($array as $item){
$id=(explode(',', $item["group_concat( id separator ',' )"]));
sort($id);

foreach (range(0, count($id)-1) as $number) {
$id[$number] = '/index.php?option=com_content&view=article&id='.$id[$number] ;
}
file_put_contents('000.txt', print_r($id, 1), FILE_APPEND);

}
_
На сайте с 24.03.2008
Offline
357
#9

Никак. Это ненужная, вредная идея.

Одинаковое фигачьте в шаблон итп...

edogs software
На сайте с 15.12.2005
Offline
714
#10
foreach (range(0, count($id)-1) as $number) {

О госпаде. Зачем так сложно?

Есть же http://php.net/for

Или что более логично для Вашей ситуации foreach($id можно

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий