как можно распечатать данные двух массивов в одном порядке - PullRequest
1 голос
/ 06 октября 2019

Я хочу найти некоторые данные в двух разных массивах, как этот;

$arr1[]=('2019-10-3', '2019-10-9', '2019-10-10', '2019-10-13', '2019-10-17', '2019-10-21',);

и другой массив, например,

for($i=1;$i<31;$i++){ $arr2[]=date('Y').'-'.date('m').'-'.$i; }

Теперь я хочу напечатать на экране, если данные $arr1 находятся в $arr2 '1', иначе '0'в том же порядке, как это

if($arr2['0']==$arr1[0]){echo '1' ;} else {echo '0'}

 '2019-10-1' is not in $arr1 echo '0',
 '2019-10-2' is not in $arr1 echo '0',
 '2019-10-3' is in $arr1 echo '1',
'2019-10-4' is not in $arr1 echo '0',
'2019-10-5' is not in $arr1 echo '0',
'2019-10-6' is not in $arr1 echo '0',
'2019-10-7' is not in $arr1 echo '0',
'2019-10-8' is not in $arr1 echo '0',
'2019-10-9' is in $arr1 echo '1',
'2019-10-10' is in $arr1 echo '1',
'2019-10-11' is not in $arr1 echo '0',
....

Я использую этот код, но он не работает так, как я хочу. Это печать только это;1,1,1,1,1

for($k=0;$k<5;$k++){
    if(in_array($arr1[$k],$tar)){
       echo '1,';
    } else {
       echo '0,';
    }
}

Ответы [ 3 ]

1 голос
/ 06 октября 2019

Это будет вариант, который немного очищен:

<?php
$arr1 = ['2019-10-3', '2019-10-9', '2019-10-10', '2019-10-13', '2019-10-17', '2019-10-21'];
$arr2 = [];
for($i = 1; $i < 31; $i++) { 
    $arr2[] = sprintf("%d-%d-%d", date('Y'), date('m'), $i);
}

$output = [];
for($k = 0; $k < 30; $k++) {
    $output[] = in_array($arr2[$k], $arr1) ? '1' : '0';
}

echo implode(", ", $output);

А вот вариант, который немного медленнее, но имеет гораздо лучшую читаемость и надежность:

<?php
$arr1 = ['2019-10-3', '2019-10-9', '2019-10-10', '2019-10-13', '2019-10-17', '2019-10-21'];
$arr2 = [];
for($i=1;$i<31;$i++) { 
    $arr2[$i] = sprintf("%d-%d-%d", date('Y'), date('m'), $i);
}

$output = [];
foreach($arr2 as $val) {
    $output[] = in_array($val, $arr1) ? '1' : '0';
}

echo implode(", ", $output);

Вывод обоих вариантов, очевидно, таков:

0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
1 голос
/ 06 октября 2019

Вы имеете в виду, как это?

<?php
$arr1=array ('2019-10-3', '2019-10-9', '2019-10-10', '2019-10-13', '2019-10-17', '2019-10-21');
for($i=1;$i<31;$i++)
{ 
    $arr2[]=date('Y').'-'.date('m').'-'.$i;
}
for($k=0;$k<30;$k++){
      if(in_array($arr2[$k],$arr1)){
             echo '1,';
          } else {
              echo '0,';
          }
       }
?>

 Output: 0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0
0 голосов
/ 06 октября 2019

Пока вы создаете второй массив, вы можете просто проверить, находится ли он в массиве 1.

$arr1 = ['2019-10-3', '2019-10-9', '2019-10-10', '2019-10-13', '2019-10-17', '2019-10-21'];


for($i=1;$i<31;$i++){ 
    $date = date('Y').'-'.date('m').'-'.$i;
    echo $date . ": ";
    if(in_array($date, $arr1)){
         echo "1\n";
    }else{
         echo "0\n";
    }
}

Вывод:

2019-10-1: 0
2019-10-2: 0
2019-10-3: 1
2019-10-4: 0
2019-10-5: 0
2019-10-6: 0
2019-10-7: 0
2019-10-8: 0
2019-10-9: 1
2019-10-10: 1
2019-10-11: 0
2019-10-12: 0
2019-10-13: 1
2019-10-14: 0
2019-10-15: 0
2019-10-16: 0
2019-10-17: 1
2019-10-18: 0
2019-10-19: 0
2019-10-20: 0
2019-10-21: 1
2019-10-22: 0
2019-10-23: 0
2019-10-24: 0
2019-10-25: 0
2019-10-26: 0
2019-10-27: 0
2019-10-28: 0
2019-10-29: 0
2019-10-30: 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...