如何使用PHP从数据库中使用逗号分隔值

时间:2015-04-28 13:38:38

标签: php database php-5.3 php-5.2

我在数据库的一个字段中分隔了四个名为逗号的文件,例如file1file2file3file4。它可能会根据文件上传而改变。用户最多可以上传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最后一个正在得到""这意味着file1file2file3file4中有一个名称丢失,所以我想显示是否有任何文件名不存在意味着我不想要使用""

显示空值

我有一个字段有file1,file2,file3,file4所以我们将有file1,file3然后剩下的将不存在所以我想计算用逗号分隔的文件名,如果file1是应该打印,如果file3是那时它不应该用""

显示

1 个答案:

答案 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