比较php中的数组值

时间:2015-08-23 19:50:36

标签: php mysql arrays arraylist

我需要比较数组值,一个数组来自外部用户,第二个数组是从mysql表获取。 代码正在使用

  function dsPieChart(x){
     var   formatAsPercentage = d3.format("%") ;
    var dataset = [
        {category: "", measure:x },
        {category: "", measure:(100-x)},

    ]
    ;

    var   width = 100,
         height = 100,
         outerRadius = Math.min(width, height) / 2,
         innerRadius = outerRadius * .9,
         // for animation
         innerRadiusFinal = outerRadius * .8,
         innerRadiusFinal3 = outerRadius* .7,
         color = d3.scale.category20b()   //builtin range of colors
         ;

    var vis = d3.select("#pieChart")
         .append("svg:svg")              //create the SVG element inside the <body>
         .data([dataset])                   //associate our data with the document
             .attr("width", width)           //set the width and height of our visualization (these will be attributes of the <svg> tag
             .attr("height", height)
            .append("svg:g")                //make a group to hold our pie chart
             .attr("transform", "translate(" + outerRadius + "," + outerRadius + ")")    //move the center of the pie chart from 0, 0 to radius, radius
          ;

    var arc = d3.svg.arc()              //this will create <path> elements for us using arc data
            .outerRadius(outerRadius).innerRadius(innerRadius);

     // for animation
    var arcFinal = d3.svg.arc().innerRadius(innerRadiusFinal).outerRadius(outerRadius);
    var arcFinal3 = d3.svg.arc().innerRadius(innerRadiusFinal3).outerRadius(outerRadius);

     var pie = d3.layout.pie()           //this will create arc data for us given a list of values
          .value(function(d) { return d.measure; });    //we must tell it out to access the value of each element in our data array

     var arcs = vis.selectAll("g.slice")     //this selects all <g> elements with class slice (there aren't any yet)
          .data(pie)                          //associate the generated pie data (an array of arcs, each having startAngle, endAngle and value properties)
          .enter()                            //this will create <g> elements for every "extra" data element that should be associated with a selection. The result is creating a <g> for every object in the data array
              .append("svg:g")                //create a group to hold each slice (we will have a <path> and a <text> element associated with each slice)
                 .attr("class", "slice")    //allow us to style things in the slices (like text)
                 .on("mouseover", mouseover)
              .on("mouseout", mouseout)
              .on("click", up)
              ;

          arcs.append("svg:path")
                 .attr("fill", function(d, i) { return color(i); } ) //set the color for each slice to be chosen from the color function defined above
                 .attr("d", arc)     //this creates the actual SVG path using the associated data (pie) with the arc drawing function
            .append("svg:title") //mouseover title showing the figures
          //   .text(function(d) { return d.data.category + ": " + d.data.measure ; });
           .text(function(d) { return  d.data.measure ; });

          d3.selectAll("g.slice").selectAll("path").transition()
            .duration(750)
            .delay(10)
            .attr("d", arcFinal )
            ;
      // Add a label to the larger arcs, translated to the arc centroid and rotated.

      arcs.filter(function(d) { return d.endAngle - d.startAngle > .2; })
          .append("svg:text")
          .attr("dy", ".35em")
          .attr("text-anchor", "middle")
          .attr("transform", function(d) { return "translate(" + arcFinal.centroid(d) + ")rotate(" + angle(d) + ")"; })
          .text(function(d) { return d.data.category; })
          ;
       // Computes the label angle of an arc, converting from radians to degrees.
      function angle(d) {
          var a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;
          return a > 90 ? a - 180 : a;
      }
      // Pie chart title
      vis.append("svg:text")
          .attr("dy", ".35em")
          .attr("text-anchor", "middle")
          .text(x +"%")
          .attr("class","title")
          ;

    function mouseover() {
      d3.select(this).select("path").transition()
          .duration(750)
                .attr("d", arcFinal3)
                ;
    }

    function mouseout() {
      d3.select(this).select("path").transition()
          .duration(750)
                //.attr("stroke","blue")
                //.attr("stroke-width", 1.5)
                .attr("d", arcFinal)
                ;
    }

    function up(d, i) {
          /* update bar chart when user selects piece of the pie chart */
          //updateBarChart(dataset[i].category);
          updateBarChart(d.data.category, color(i));
          updateLineChart(d.data.category, color(i));

    }
  }

例如用户输入是(爆炸数组)

<?php
include('db.php');
$input_array=array();
$input_array=explode("," , $_POST['list']);
print_r($input_array)."<br>";

$array                   = array();



                         $result =mysql_query("SELECT b_no FROM abc");
                         while($fetch_array=mysql_fetch_array($result)){
                         $array[] = $fetch_array['b_no'];
                         }



                        echo count($array)."<br>";
                        echo count($input_array)."<br>";
                         ?>

和 假设我在mysql表数据中有索引值8,1和9(两次),那么输出应该是这个

Array ( [0] => 627501 [1] => 627502 [2] => 627503 [3] => 627504 [4] => 627505 [5] => 627506 [6] => 627507 [7] => 627508 [8] => 627509 [9] => 627510 ) 

我也浪费了太多时间在Array_intersect函数上.....它怎么可能? 谢谢:))

1 个答案:

答案 0 :(得分:0)

好吧,也许你可以用这个:

 $dbarray   = array('a1', 'a2', 'a3', 'a4', 'a5', 'a6');
 $userarray = array('a2', 'a3', 'a3', 'a6');

 $negativearray = array_diff($dbarray, $userarray);
 $positivearray = array_diff($dbarray, $negativearray);

 foreach($positivearray as $chunk){
  echo $chunk.' ['.count(preg_grep('/^'.$chunk.'$/', $userarray)).']<br>';
 }

输出:

a2 [1]
a3 [2]
a6 [1]