У меня есть четыре файла с именем запятая в одном поле в базе данных, как это file1
,file2
,file3
,file4
, Может меняться в зависимости от загрузки файлов. Пользователь может загрузить максимум 4 файла, минимум один файл. Но я не смог получить это. Я использовал взорваться, но это занимает слишком много времени.
Я использую этот код:
$imagefiles = $row["imagefiles"];$cutjobs = explode(",", $imagefiles);
$cutjobs1 = count($cutjobs);
$image1 = $cutjobs[0];
$image2 = $cutjobs[1];
$image3 = $cutjobs[2];
$image4 = $cutjobs[3];
if (empty($image1)) {
$imagefiles1 = "";
} else {
$imagefiles1 = 'http://projects.santabantathegreat.com/glassicam/uploads/'.$registerid.
"/".$viewjobsid.
"/".$image1;
}
if (empty($image2)) {
$imagefiles2 = "";
} else {
$imagefiles2 = 'http://projects.santabantathegreat.com/glassicam/uploads/'.$registerid.
"/".$viewjobsid.
"/".$image2;
}
if (empty($image3)) {
$imagefiles3 = "";
} else {
$imagefiles3 = 'http://projects.santabantathegreat.com/glassicam/uploads/'.$registerid.
"/".$viewjobsid.
"/".$image3;
}
if (empty($image4)) {
$imagefiles4 = "";
} else {
$imagefiles4 = 'http://projects.santabantathegreat.com/glassicam/uploads/'.$registerid.
"/".$viewjobsid.
"/".$image4;
}
}
$data[] = array( 'imagearray' => array($imagefiles, $imagefiles1, $imagefiles2, $imagefiles3));}
echo json_encode($data);
}
Я получаю вывод, как это:
[{"imagearray":["http:\/\/projects.santabantathegreat.com\/glassicam\/uploads\/60\/30\/file1.jpg","http:\/\/projects.santabantathegreat.com\/glassicam\/uploads\/60\/30\/file2.jpg",""]}]
Если вы видите этот массив изображений, последний получает «», это означает, что некоторые file1
, file2
, file3
, file4
одно имя отсутствует, поэтому я хочу показать, если какого-либо имени файла нет, значит, я не хочу показывать нулевые значения с помощью «»
у меня есть поле с file1, file2, file3, file4, так что раз у нас будет file1, file3, то оставшихся там не будет, поэтому я хочу посчитать имя файла, разделенное запятыми, и, если file1 есть, следует вывести, что если file3 там нет, то это не должно показывать с «»
Вы могли бы использовать split()
, но это устарел в PHP 5.3.0. Итак, вместо вас осталось:
explode()
что существенно быстрее, потому что оно не разбивается на основе регулярного выражения, поэтому строка не должна анализироваться анализатором регулярных выражений.или же
preg_split()
который быстрее и использует регулярные выражения PCRE для разбиений регулярных выражений.С preg_split()
Вы могли бы сделать:
<?php
$encoded_data = json_encode($data);
$images = preg_split('/,/', $encoded_data->imagearray);
?>
Я бы сказал, что explode()
больше подходит для этого.
<?php
$encoded_data = json_encode($data);
$images = explode(',', $encoded_data->imagearray);
print_r($images);
?>
Ресурсы: В чем разница между split () и explode ()?
У вас не должно быть пустых значений в вашем массиве. Но если у вас все еще есть пустые значения, вы можете использовать preg_split()
что-то вроде один здесь.
Точно так же вы можете использовать array_filter () обрабатывать удаление значений (null, false,'',0)
:
print_r(array_filter($images));
Здесь, на этом форуме, так много ответов, которые делают именно то, что вы спрашиваете: Удалить пустые элементы массива, Удалить пустой элемент значения в массиве.
Других решений пока нет …