簡體   English   中英

如何從PHP中的另一個數組構建數組

[英]How to build an array from another array in PHP

我正在嘗試創建基本的導出。 我有一組節點,但是在構思如何將其與CVS腳本一起使用時遇到了麻煩。 我是PHP的新手。 這是放置我遇到麻煩的foreach的地方。

這是我的節點代碼。

foreach ($nodes as $node) {
    print $node->nid;
    print $node->title; 
}

//這是我的cvs代碼。

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

$mydata = array(
    array('data11', 'data12', 'data13'),
    array('data21', 'data22', 'data23'),
    array('data31', 'data32', 'data23'));
outputCSV($csv);

function outputCSV($data) {
    $outstream = fopen("php://output", 'w');
    function __outputCSV(&$vals, $key, $filehandler) {
        fputcsv($filehandler, $vals); // add parameters if you want
    }
    array_walk($data, '__outputCSV', $outstream);
    fclose($outstream);

}

快速而麻煩的解決方案是強制將$ vals變量強制轉換為數組,因此您的函數應如下所示:

function outputCSV($data) {
    $outstream = fopen("php://output", 'w');
    function __outputCSV(&$vals, $key, $filehandler) {
        if (is_object($vals)) {
            $vals = (array)$vals;
        }
        fputcsv($filehandler, $vals); // add parameters if you want
    }
    array_walk($data, '__outputCSV', $outstream);
    fclose($outstream);
}

這是有可能的,因為我在這里引用“如果將對象轉換為數組,則結果是一個數組,其元素是對象的屬性。”

另一種解決方案是遍歷$ nodes數組並根據CSV生成函數接受的結構創建一個新的數組:

$dataFromNodes = array();
foreach ($nodes as $node) {
   $dataFromNodes[] = array($node->nid, $node->title);
}

然后,使用新創建的數組調用函數:

outputCSV($dataFromNodes);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM