PHP在foreach之外保存数组的值

时间:2017-05-31 18:50:20

标签: php arrays foreach

好的,我有一个txt文件,它是一个数据源,每一行都是一组[tab]分隔的元素,用于单个项目,如:

name value1 value2 url 
name value1 value2 url

等等.. 我正在读取文件并使每一行成为数组中的单个元素,并且行中的每个元素都是下一个子数组中的单个元素。(仅获取10个用于测试,第1行是标题&#39 ;为什么我从第一个元素开始。)

$feed = file_get_contents("file.txt");
$lines = explode("\n", $feed);
$prods = array();

for ($i=1; $i < 11; $i++) {

    array_push($prods, explode("\t", $lines[$i])); 

}

所以在这一点上,$ prods数组看起来像:

Array
(
    [0] => Array
        (
            [0] => name1
            [1] => somedata1
            [2] => somedata2
            [3] => http://someurl.com

        )
    [2] => Array 
        (
            [0] => name2
            [1] => somedata1
            [2] => somedata2
            [3] => http://someurl.com

        )
)

然后是foreach循环从URL获取数据并将其作为第4个元素添加到这些子数组中:

foreach ($prods as $item) {


    $url = $item[3];

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

    preg_match('@some regex here@is', $result, $match);

    if (sizeof($match) > 0) {

        $item[] = $match[1];




    } else {

        $item[] = 'empty';


    }   

    echo '<pre>';   //
    print_r($item); //  this gives me the nice output of 4 elements arrays with the fetched data where I want it to be
    echo '</pre>';  //

}   

这里的一切都很好但是如果我在它之外的循环之后打印$ prods数组,它会让我返回与foreach循环之前相同的未触及数组。

问题是,如何保存对循环中数组的更改,以便我可以在循环外访问修改后的数组?

0 个答案:

没有答案