![](/img/trans.png)
[英]How to build the keys of a multidimensional array in PHP from the values of another array?
[英]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.