Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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 如何创建由if语句触发的二维数组?_Php_Multidimensional Array - Fatal编程技术网

Php 如何创建由if语句触发的二维数组?

Php 如何创建由if语句触发的二维数组?,php,multidimensional-array,Php,Multidimensional Array,我正在创建一个搜索算法,在文本文件中查找特定字符串,并使用一个作为起点,另一个作为终点 在起始点,它触发一个函数开始将行复制到数组 function copy_line_to_array($line_to_copy, &$found_lines) { array_push($found_lines, $line_to_copy."<br>"); } 我想做的是每次找到“起点”时,在$found\u行数组中创建一个数组。这将允许我分别处理每个从开始到结束的文

我正在创建一个搜索算法,在文本文件中查找特定字符串,并使用一个作为起点,另一个作为终点

在起始点,它触发一个函数开始将行复制到数组

function copy_line_to_array($line_to_copy, &$found_lines)
  {
  array_push($found_lines, $line_to_copy."<br>");
  }   
我想做的是每次找到“起点”时,在$found\u行数组中创建一个数组。这将允许我分别处理每个从开始到结束的文本块,并在其中搜索不同的字符串


如何在数组中为每个文本块创建新数组?

调整算法,使其将行复制到“当前块”数组中。无论何时找到和结束点,都将当前块附加到主数组并启动一个新的块:

$master = $chunk = [];
$copy_line = false;

foreach($rows as $row => $data)
{
    if(preg_match("/Start Point/", $data))
    {
        $copy_line = true;
    } 
    else if(preg_match("/End Point/", $data))
    {
        $copy_line = false;
        copy_line_to_array($data, $chunk);
        $master[] = $chunk;  // append chunk to master
        $chunk = [];         // start with fresh empty chunk next time
    }

    if($copy_line)
    {   
        copy_line_to_array($data, $chunk);
    }           
}

好的,我试过了,但是没有输出。我的问题中包括了复制功能。该数组推送是否可以与该数组一起工作?好的,很好,可以与$master=$found\u xml\u lines=array()一起工作;相反如何使用for-each语句来处理每个$chunk?@blarg:
foreach($master作为$chunk)
。这是超基本的循环,如果你不清楚怎么做,我建议你再复习一下手册。好的,谢谢,我会的。我在手册中找到了in_数组,并希望对其进行调整以进行字符串匹配。你知道我如何使用它来检查区块数组中包含的每一行文本是否包含一个字符串,而不是包含整个字符串吗?@blarg:你不能,但是
preg\u grep
array\u filter
会有所帮助。
$master = $chunk = [];
$copy_line = false;

foreach($rows as $row => $data)
{
    if(preg_match("/Start Point/", $data))
    {
        $copy_line = true;
    } 
    else if(preg_match("/End Point/", $data))
    {
        $copy_line = false;
        copy_line_to_array($data, $chunk);
        $master[] = $chunk;  // append chunk to master
        $chunk = [];         // start with fresh empty chunk next time
    }

    if($copy_line)
    {   
        copy_line_to_array($data, $chunk);
    }           
}
if($copy_line == "on")
{   
    $found_lines[] = $data
}