我在数据库的一个字段中分隔了四个名为逗号的文件,例如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",""]}]
如果你看到这个imageArray最后一个正在得到""这意味着file1
,file2
,file3
,file4
中有一个名称丢失,所以我想显示是否有任何文件名不存在意味着我不想要使用""
我有一个字段有file1,file2,file3,file4所以我们将有file1,file3然后剩下的将不存在所以我想计算用逗号分隔的文件名,如果file1是应该打印,如果file3是那时它不应该用""
显示答案 0 :(得分:1)
您可以使用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()
之类的(null, false,'',0)
。
同样,您可以使用this one here来处理值print_r(array_filter($images));
的删除:
$(function() {
$("#box").hover(function(e) {
var el_pos = $(this).offset();
var edge = closestEdge(e.pageX - el_pos.left, e.pageY - el_pos.top, $(this).width(), $(this).height());
$('.under_div').css({
"left":"0",
"width":"100px",
"background-position":"100% 0%"
});
$('.over_div').css({
"left":"0",
"width":"0px",
"background-position":"0% 0%"
});
if(edge=='left')
{
$('.over_div').css({
"left":"0",
"width":"100px",
"background-position":"0% 0%"
});
}
else
{
$('.over_div').css({
"left":"0px",
"width":"100px",
"background-position":"100% 0%"
});
}
}, function(e) {
var el_pos = $(this).offset();
var edge = closestEdge(e.pageX - el_pos.left, e.pageY - el_pos.top, $(this).width(), $(this).height());
if(edge=='left')
{
$('.over_div').css({
"left":"0px",
"width":"0px",
"background-position":"0% 0%"
});
}
else
{
$('.over_div').css({
"left":"100px",
"width":"0px",
"background-position":"100% 0%"
});
}
});
});
function closestEdge(x,y,w,h) {
var leftEdgeDist = distMetric(x,y,0,h/2);
var rightEdgeDist = distMetric(x,y,w,h/2);
var min = Math.min(leftEdgeDist,rightEdgeDist);
switch (min) {
case leftEdgeDist:
return "left";
case rightEdgeDist:
return "right";
}
}
function distMetric(x,y,x2,y2) {
var xDiff = x - x2;
var yDiff = y - y2;
return (xDiff * xDiff) + (yDiff * yDiff);
}
在这个论坛中有很多答案可以完全满足您的要求:array_filter(),Remove empty array elements。