数组比较,如果值存在则添加值,否则在索引中为0

时间:2016-12-22 19:38:22

标签: php

After 1st answer my output is one value missing my ratting lenght is According to Array2 not Array !,,,,,输入:

我想要这个输出: I want this type output 我的输出是0,0,0,0

我想要比较两个长度不同的数组,如果匹配则添加值,如果不匹配则添加“0”并在分配后跳过并转到第一个循环

我的代码:

for($i=0;$i<count($custt1);$i++){

    for($j=0;$j<count($items);$j++){

        if($items[$j]==$custt1[$i]){
            $x[$j]=$rating[$j]; 
        }
        else{   
            $x[$j]=0;
        }
    }

    for($j=0;$j<count($items1);$j++){

        if($items1[$j]==$custt1[$i]){
            $y[$j]=$rating1[$j];
        }
        else{
            $y[$j]=0;
        }
    }   
}

如果值存在,我想保存在x和y数组中然后添加评级,否则为“0”并转到第一个循环但是如果值不存在则我面向索引0添加0和8个索引。希望您理解我的解释,请帮助我解决这个问题。

now  my output is by applying 1st answer
<br />
<b>Notice</b>:  Undefined offset: 5 in
<b>C:\xampp\htdocs\Rest\new2.php</b> on line
<b>79</b>
<br />

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 0
    [4] => 5
    [5] => 
    [6] => 0
    [7] => 0
    [8] => 0
) 

因为我正在实施推荐系统

<?php
    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
    $dbname = "hfc";
    $array;
    $connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

if ($connection) {
$sql1="SELECT item_name
from feedback

GROUP BY item_name";

$sql="SELECT customer_email_address AS customeremail,
        GROUP_CONCAT(
           DISTINCT CONCAT(cook_email_address,'-',item_name,'-',rating)
        ) AS uniqueItem
   FROM feedback
GROUP BY customer_email_address";

$result = mysqli_query($connection, $sql);
    while ($row = mysqli_fetch_array($result)) 
    {

  $customer_email[] = $row['customeremail'];
    $cust1[]= $row['uniqueItem'].",";
  }



$item[] = explode(",",$cust1[0]);



for($i=0;$i<count($item[0])-1;$i++){
$item_rating[] = explode("-",$item[0][$i]);
}
  print_r ($item_rating);
for($i=0;$i<count($item_rating);$i++){

        $items[]=$item_rating[$i][1];
        $rating[]=$item_rating[$i][2];


}



$item1[] = explode(",",$cust1[1]);


for($i=0;$i<count($item1[0])-1;$i++){
$item_rating1[] = explode("-",$item1[0][$i]);
}
  print_r ($item_rating1);
for($i=0;$i<count($item_rating1);$i++){

        $items1[]=$item_rating1[$i][1];
        $rating1[]=$item_rating1[$i][2];


}



$result1 = mysqli_query($connection, $sql1);
  while ($row = mysqli_fetch_array($result1)) 
    {
    $custt1[]= $row['item_name'];

  }
  print_r ($custt1);
 print_r ($items);
 $output = array();
foreach ($custt1 as  $i =>$item) {

    if (in_array($item, $items)) {
        $output[] = $rating[$i];


    } else {
        $output[] = 0;

    }




}

 print_r ($output);
for($i=0;$i<count($custt1);$i++){

    for($j=0;$j<count($items);$j++){



        if($items[$j]==$custt1[$i]){


        $x[$i]=$rating[$j];

        }
        else{

            $x[$i]=0;



        }


    }


    for($j=0;$j<count($items1);$j++){

        if($items1[$j]==$custt1[$i]){
            $y[$j]=$rating1[$j];

        }

        else{

            $y[$j]=0;

        }
    }


}





 print_r ($x);
 print_r ($y);





  for($i1=0;$i1<count($custt1);$i1++)
  {

     $array[]=explode(",",$custt1[$i1]);  
  }
  // echo count($array);
 // print_r($custt1)."<br>";


  /*for($i=0;$i<count($array);$i++)
  {
     for($y=1;$y<count($array);$y++)
     {
         $pearson=Corr($array[$i],$array[$y],$c=count($array));
     }

  }*/
  $pearson=Corr($array);

   echo $pearson;
}

function Corr(&$arr){
    $x=$arr[0];
    $y=$arr[1];
$length=count($x)-1;

$mean1=array_sum($x)/ $length;
$mean2=array_sum($y)/ $length;

echo $mean1."mean of x";
echo $mean2."mean of y";
echo "\n";
//echo $mean2;

$a=0;
$b=0;
$axb=0;
$a2=0;
$b2=0;

for($i=0;$i<$length;$i++)
{
$a=$x[$i]-$mean1;
$b=$y[$i]-$mean2;
$axb=$axb+($a*$b);
$a2=$a2+ pow($a,2);
$b2=$b2+ pow($b,2);
$corr= $axb / sqrt($a2*$b2);


}   

return $corr;
}

?>

1 个答案:

答案 0 :(得分:1)

使用in_array()判断数组1的元素是否在数组2中。

$output = array();
foreach ($array1 as $i => $item) {
    if (in_array($item, $array2)) {
        $output[] = $rating[$i];
    } else {
        $output[] = 0;
    }
}