pu sh несколько значений в массив - PullRequest
1 голос
/ 15 января 2020

У меня есть массив данных, например:

array:2 [
  0 => array:1 [
    "image" => "attachment-T48Pi7oAov.jpg"
  ]
  1 => array:1 [
    "image" => "attachment-IF8VG2pypn.jpg"
  ]
]

Мне нужно добавить sh 2 дополнительных значения в каждый из этих массивов, например:

array:2 [
  0 => array:1 [
    "image" => "attachment-T48Pi7oAov.jpg",
    "attachable_type" => "whatever",
    "attachable_id" => "whatever"
  ]
  1 => array:1 [
    "image" => "attachment-IF8VG2pypn.jpg",
    "attachable_type" => "whatever",
    "attachable_id" => "whatever"
  ]
]

Если я использую array_push или array_unshift возвращает номера, такие как 6 или 3

Код

if ($image = $request->file('attachments')) {
    foreach ($image as $files) {
        $filePath = public_path('images/attachment/');
        $filename = 'attachment' . '-' . str_random(10) . '.' . $files->getClientOriginalExtension();
        $files->move($filePath, $filename);
        $names[]['image'] = "$filename";
        $type['attachable_type'] = "App\ProjectScheduleVisit";
        $id['attachable_id'] = "$visit->id";

        $insert = array_push($names, $type, $id);
    }
}

Есть идеи?

Ответы [ 3 ]

1 голос
/ 15 января 2020

В вашем l oop, упакуйте все значения в массив, и pu sh сразу:

$package = [
    'image' => $filename,
    'attachable_type' => App\ProjectScheduleVisit::class,
    'attachable_id' => $visit->id,
]
$names[] = $package;

Если вам также нужен присоединяемый тип и идентификатор в отдельных массивах (как предложено ваш код, но это может быть артефактом ваших попыток), затем извлеките их из пакета:

$type['attachable_type'] = $package['attachable_type'];
$id['attachable_id'] = $package['attachable_id'];
1 голос
/ 15 января 2020

Просто пример для вас

$a = [
  [
    "image" => "attachment-T48Pi7oAov.jpg",
  ],
  [
    "image" => "attachment-IF8VG2pypn.jpg",
  ],
];

foreach ($a as $key => $value) {
    $a[$key]['attachable_type'] = rand(1, 100);
    $a[$key]['attachable_id'] = rand(1, 100);
}

print_r($a);
0 голосов
/ 15 января 2020

Попробуйте перебрать массив и поместить нужный элемент в каждый из подмассивов.

array_walk(
        $array,
        function (&$item, $key) {
            $item['attachable_type'] = 'whatever';
            $item['attachable_id'] = 'whatever';
        }
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...