Как использовать номер ключа в качестве значения в массиве? - PullRequest
1 голос
/ 11 июля 2019

У меня есть массив с элементами, и каждый элемент имеет несколько параметров.Одним из параметров является гиперссылка с идентификатором этого элемента.И мне нужно, чтобы этот идентификатор был ключом для значения этого элемента.

Я уже пробовал что-то вроде этого:

function item_preview($database)
 {
    foreach($database as $key=> $value)
    {
      $one= $key;
    }
      return $one;
}

$database= [
[
    'name'=> 'item_one',
    'img_src'=> 'pictures/item_one.jpg',
    'preview_href'=> 'item_site.php?id='.item_preview($database).'',
    'description'=> 'This product is.....' ,
],
[
    'name'=> 'item_two',
    'img_src'=> 'pictures/item_two.jpg',
    'preview_href'=> 'item_site.php?id='.item_preview($database).'',
    'description'=> 'This product is.....' ,
],

];

и что мне нужноэто ...

 $database= [
 [
    'name'=> 'item_one',
    'img_src'=> 'pictures/item_one.jpg',
    'preview_href'=> 'item_site.php?id= here should be key number',
    'description'=> 'This product is.....' ,
],
[
    'name'=> 'item_two',
    'img_src'=> 'pictures/item_two.jpg',
    'preview_href'=> 'item_site.php?id= here should be key number',
    'description'=> 'This product is.....' ,
],
];

Так что мне нужен идентификатор, чтобы быть ключом этого элемента.Итак, первый элемент id = 0;идентификатор второго элемента = 1; ....

Ответы [ 2 ]

2 голосов
/ 11 июля 2019

Вы можете сделать что-то вроде

$startingIndex = 0;

$database= [
[
    'name'=> 'item_one',
    'img_src'=> 'pictures/item_one.jpg',
    'preview_href'=> 'item_site.php?id='.$startingIndex++.'',
    'description'=> 'This product is.....' ,
],
[
    'name'=> 'item_two',
    'img_src'=> 'pictures/item_two.jpg',
    'preview_href'=> 'item_site.php?id='.$startingIndex++.'',
    'description'=> 'This product is.....' ,
],

В результате идентификатор будет 0 для первой записи, 1 для второй и т. Д.

0 голосов
/ 11 июля 2019

Вы можете просто определить ключ и использовать его в href:

$database= [
0=>[
    'name'=> 'item_one',
    'img_src'=> 'pictures/item_one.jpg',
    'preview_href'=> 'item_site.php?id=0',
    'description'=> 'This product is.....' ,
],
1=>[
    'name'=> 'item_two',
    'img_src'=> 'pictures/item_two.jpg',
    'preview_href'=> 'item_site.php?id=1',
    'description'=> 'This product is.....' ,
]];

Или, после определения массива, просто обойдите его и добавьте ключ:

$database= [
[
    'name'=> 'item_one',
    'img_src'=> 'pictures/item_one.jpg',
    'preview_href'=> 'item_site.php?id=',
    'description'=> 'This product is.....' ,
],
[
    'name'=> 'item_two',
    'img_src'=> 'pictures/item_two.jpg',
    'preview_href'=> 'item_site.php?id=',
    'description'=> 'This product is.....' ,
]];

array_walk($database, function(&$v, $k){ $v['preview_href'] .= $k; });
...