如何使用 PHP 从数据库中获取以逗号分隔的值
How to get values separated with comma from database using PHP
我在数据库的一个字段中有四个以逗号分隔的文件,例如 file1
、file2
、file3
、file4
。它可能会根据文件上传而改变。用户最多可以上传 4 个文件,最少一个文件。但我无法得到它。我使用了 explode,但它花费的时间太长了。
我正在使用此代码:
$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",""]}]
如果你看到这个 imageArray 最后一个是“”,这意味着 file1
、file2
、file3
、file4
中的一些名字丢失了,所以我想要显示是否有任何文件名不存在意味着我不想用 ""
显示空值
我有一个包含文件 1、文件 2、文件 3、文件 4 的字段,所以有时我们会有文件 1、文件 3,然后剩下的就不在那里了,所以我想计算用逗号分隔的文件名,如果文件 1 存在,则应该打印出来file3 不存在,那么它不应该显示为“”
您本可以使用 split()
,但它是 deprecated in 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);
?>
资源: What is the difference between split() and explode()?
首先你的数组中不应该有空值。但是如果你仍然有任何空值,你可以使用 preg_split()
之类的 this one here.
同样,您可以使用 array_filter() 来处理删除值 (null, false,'',0)
:
print_r(array_filter($images));
此论坛中有很多答案完全符合您的要求:Remove empty array elements, Delete empty value element in array。
我在数据库的一个字段中有四个以逗号分隔的文件,例如 file1
、file2
、file3
、file4
。它可能会根据文件上传而改变。用户最多可以上传 4 个文件,最少一个文件。但我无法得到它。我使用了 explode,但它花费的时间太长了。
我正在使用此代码:
$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",""]}]
如果你看到这个 imageArray 最后一个是“”,这意味着 file1
、file2
、file3
、file4
中的一些名字丢失了,所以我想要显示是否有任何文件名不存在意味着我不想用 ""
我有一个包含文件 1、文件 2、文件 3、文件 4 的字段,所以有时我们会有文件 1、文件 3,然后剩下的就不在那里了,所以我想计算用逗号分隔的文件名,如果文件 1 存在,则应该打印出来file3 不存在,那么它不应该显示为“”
您本可以使用 split()
,但它是 deprecated in 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);
?>
资源: What is the difference between split() and explode()?
首先你的数组中不应该有空值。但是如果你仍然有任何空值,你可以使用 preg_split()
之类的 this one here.
同样,您可以使用 array_filter() 来处理删除值 (null, false,'',0)
:
print_r(array_filter($images));
此论坛中有很多答案完全符合您的要求:Remove empty array elements, Delete empty value element in array。