Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在PHP中创建多维数组_Php_Arrays - Fatal编程技术网

无法在PHP中创建多维数组

无法在PHP中创建多维数组,php,arrays,Php,Arrays,我有一个名为$workers的工人数组,还有名为$jobs的工作。让他们每天为每项工作做$jobs\。现在我需要为这些日常工作创建一个数组。这是我的密码: $all_workers=array("worker1","worker2","worker3","worker4", ... ... ); $all_jobs=array("j1","j2","j3", .... .... ); $jobs_for_each=7; $k=0; $day=0; for ($n=0; $n < 3; $n

我有一个名为
$workers
的工人数组,还有名为
$jobs
的工作。让他们每天为每项工作做
$jobs\。现在我需要为这些日常工作创建一个数组。这是我的密码:

$all_workers=array("worker1","worker2","worker3","worker4", ... ... );
$all_jobs=array("j1","j2","j3", .... .... );
$jobs_for_each=7;
$k=0;
$day=0;
for ($n=0; $n < 3; $n++) 
{ 
   for ($j=0; $j < count($all_workers) ; $j++) 
   {
      for ($i=0; $i < $jobs_for_each; $i++) 
      {
         $job_arr[$day][trim($all_workers[$j])][]=trim($all_jobs[($k*$jobs_for_each)+$i]);
         $distributed_arr[]=trim($all_jobs[($k*$jobs_for_each)+$i]);
      }
      $k++; 
   }
   $remaining=array_diff ( $all_jobs , $distributed_arr );
   unset($all_jobs);
   $all_jobs = $remaining;
   if (empty($all_jobs))
   {
      $n=5;
   }
   else
   {
      $n=0;
      array_values($all_jobs);
   }
   $k=0;
   $day++;
}
$all_workers=数组(“worker1”、“worker2”、“worker3”、“worker4”和“…”);
$all_作业=数组(“j1”、“j2”、“j3”和“…”);
$jobs\u每个=7个;
$k=0;
$day=0;
对于($n=0;$n<3;$n++)
{ 
对于($j=0;$j
此代码不起作用。我需要
$job\u arr[day][worker]=数组(作业)格式的
$job\u arr

如果我的员工是
4
且工作是
100
每天的fir工作是
7
然后它应该需要4天,一些工人不应该在最后一天得到工作


谢谢。

我在第二部分做了一些修改并添加了isset:

    <?php
    $all_workers=array("worker1","worker2","worker3","worker4");
    $count_workers = count($all_workers);
    $all_jobs=array("j1","j2","j3","j4","j5","j6","j7","j8","j9","j10");
    $jobs_for_each=2;
    $k=0;
    $day=0;
    for ($n=0; $n < 3; $n++) 
    { 
        for ($j=0; $j < $count_workers ; $j++) 
        {
              for ($i=0; $i < $jobs_for_each; $i++) 
              {
                if(!isset($job_arr[$day])){
                    $job_arr[$day]=array();
                }

                 $job_left = count($all_jobs);
                  if( $job_left <= $jobs_for_each*$count_workers){
                      $jobs_for_each = ceil($job_left / $count_workers);
                  }
                 if(!isset($all_jobs[($k*$jobs_for_each)+$i])){
                    echo 'no more job<br />';break(3);
                 }else{
                     $job_arr[$day][trim($all_workers[$j])][]=trim($all_jobs[($k*$jobs_for_each)+$i]);
                     $distributed_arr[]=trim($all_jobs[($k*$jobs_for_each)+$i]);
                 }
              }
              $k++; 
        }


        $remaining=array_diff ( $all_jobs , $distributed_arr );
        if (empty($remaining))
        {
            break;
        }
        else
        {
            $all_jobs = array_values($remaining);
        }
        $k=0;
        $day++;
    }
    ?>

在尝试设置之前,您没有将
$job\u arr
初始化为数组,也没有将其任何元素初始化为数组。
$job\u arr
应该自动初始化。@Matt SL您不必在php中初始化变量。您必须定义$job\u arr[$day],启用通知:通知:未定义的偏移:3@MarcinOrlowski我不知道这适用于数组或多维数组!谢谢你的更正。
no more job
array (size=2)
  0 => 
    array (size=4)
      'worker1' => 
        array (size=2)
          0 => string 'j1' (length=2)
          1 => string 'j2' (length=2)
      'worker2' => 
        array (size=2)
          0 => string 'j3' (length=2)
          1 => string 'j4' (length=2)
      'worker3' => 
        array (size=2)
          0 => string 'j5' (length=2)
          1 => string 'j6' (length=2)
      'worker4' => 
        array (size=2)
          0 => string 'j7' (length=2)
          1 => string 'j8' (length=2)
  1 => 
    array (size=1)
      'worker1' => 
        array (size=2)
          0 => string 'j9' (length=2)
          1 => string 'j10' (length=3)