php - PHP:CSV到数组将值存储到数组中,显示在print_r中,访问时为空
问题描述
我的任务是使用旧站点数据更新新站点。因此将 csv 导入自定义帖子类型。
我有导入工作,但不幸的是,javascript 端不能很好地处理包含 html 的 csv 列。
为了解决这个问题,我发现我的解析函数对 html 列没有任何问题。现在错误恰好是,我的数组的第一个键没有保留它的数据。以前没见过这个,有点脑洞。让我知道您是否以前见过这个以及如何解决它。它也发生在每一行,不返回一个艺术键。
首先我的用于解析 csv 的 wordpress/php 代码
function waw_article_csv_to_array($filename='', $delimiter=',')
{
// this is an important setting!
ini_set('auto_detect_line_endings', true);
// IF the file doesn't exist or the file is not readable return false
if(!file_exists($filename) || !is_readable($filename))
return FALSE;
// setup our return data
$return_data = array();
// IF we can open and read the file
if (($handle = fopen($filename, "r")) !== FALSE) {
$row = 0;
// while data exists loop over data
while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
// count the number of items in this data
$num = count($data);
// loop over all items and append them to our row data
for ($c=0; $c < $num; $c++) {
// if this is the first row set it up as our header
if( $row == 0):
$header[] = $data[$c];
else:
// all rows greater than 1
//add to $return_data
$return_data[$row-1][$header[$c]] = $data[$c];
endif;
}
$row++;
}
// close our file
fclose($handle);
}
// Log Testing
error_log('Array of Keys'. print_r( array_keys($return_data[30]),true));
error_log('Return Data Array: '. print_r($return_data[30],true));
error_log('artkey:'. $return_data[30]['artkey']);
error_log('Arttitle:'.$return_data[30]['arttitle']);
error_log('issue:'.$return_data[30]['issue']);
error_log('year:'.$return_data[30]['year']);
error_log('teaser:'.$return_data[30]['teaser']);
error_log('story:'.$return_data[30]['story']);
error_log('images:'.$return_data[30]['images']);
error_log('author:'.$return_data[30]['author']);
error_log('publish:'.$return_data[30]['publish']);
error_log('sidebardisplay:'.$return_data[30]['sidebardisplay']);
error_log('notes:'.$return_data[30]['notes']);
error_log('region:'.$return_data[30]['region']);
error_log('cats:'.$return_data[30]['cats']);
error_log('Return Data Array[28]: '. print_r($return_data[28],true));
error_log('artkey[28]:'. $return_data[28]['artkey']);
error_log('Return Data Array[29]: '. print_r($return_data[29],true));
error_log('artkey[29]:'. $return_data[29]['artkey']);
error_log('Return Data Array[30]: '. print_r($return_data[30],true));
error_log('artkey[30]:'. $return_data[30]['artkey']);
error_log('Var Dump 30:'.var_dump($return_data[30]));
return $return_data;
}
在我的日志测试期间发现了这个问题,我只检查了我选择的任何行,在这个例子中的第 30 行。当我访问“artkey”时,它返回空或空白。
下面是数组键,以及数组的 print_r,以及返回的日志值。
[28-Jun-2019 19:14:33 UTC] Array of KeysArray
(
[0] => artkey
[1] => arttitle
[2] => issue
[3] => year
[4] => teaser
[5] => story
[6] => images
[7] => author
[8] => publish
[9] => sidebardisplay
[10] => notes
[11] => region
[12] => cats
[13] => editdate
)
[28-Jun-2019 19:14:33 UTC] Return Data Array: Array
(
[artkey] => 9c0e34da-e3ff-4d51-ae71-6b7003f40885
[arttitle] => Pennsylvania Bucket List Challenge
[issue] => Summer
[year] => 2019
[teaser] => <p>Take our Summer Bucket List Challenge</p>
[story] => <p><img class="fr-dib fr-draggable" src="/_img/articles/PA SUMMER Bucket List Challenge 2019.jpg" style="width: 100%;"></p>
[images] =>
[author] => Wendy
[publish] => Y
[sidebardisplay] => N
[notes] =>
[region] => North,South,East,West
[cats] =>
[editdate] => 0000-00-00 00:00:00
)
[28-Jun-2019 19:14:33 UTC] artkey:
[28-Jun-2019 19:14:33 UTC] Arttitle:Pennsylvania Bucket List Challenge
[28-Jun-2019 19:14:33 UTC] issue:Summer
[28-Jun-2019 19:14:33 UTC] year:2019
[28-Jun-2019 19:14:33 UTC] teaser:<p>Take our Summer Bucket List Challenge</p>
[28-Jun-2019 19:14:33 UTC] story:<p><img class="fr-dib fr-draggable" src="/_img/articles/PA SUMMER Bucket List Challenge 2019.jpg" style="width: 100%;"></p>
[28-Jun-2019 19:14:33 UTC] images:
[28-Jun-2019 19:14:33 UTC] author:Wendy
[28-Jun-2019 19:14:33 UTC] publish:Y
[28-Jun-2019 19:14:33 UTC] sidebardisplay:N
[28-Jun-2019 19:14:33 UTC] notes:
[28-Jun-2019 19:14:33 UTC] region:North,South,East,West
[28-Jun-2019 19:14:33 UTC] cats:
我不确定我的 php 数组发生了什么,但是 print_r 将使用任何索引(除了使用的 30)显示 artkey 的值,但是当我通过数组键访问它时无法访问它。任何帮助表示赞赏,这就像我写的 6 个进口商不知道会发生什么。
作为请求的返回数据的附加行:
[28-Jun-2019 19:55:53 UTC] Return Data Array[30]: Array
(
[artkey] => 9c0e34da-e3ff-4d51-ae71-6b7003f40885
[arttitle] => Pennsylvania Bucket List Challenge
[issue] => Summer
[year] => 2019
[teaser] => <p>Take our Summer Bucket List Challenge</p>
[story] => <p><img class="fr-dib fr-draggable" src="/_img/articles/PA SUMMER Bucket List Challenge 2019.jpg" style="width: 100%;"></p>
[images] =>
[author] => Wendy
[publish] => Y
[sidebardisplay] => N
[notes] =>
[region] => North,South,East,West
[cats] =>
[editdate] => 0000-00-00 00:00:00
)
[28-Jun-2019 19:55:53 UTC] artkey[30]:
[28-Jun-2019 19:55:53 UTC] Return Data Array[29]: Array
(
[artkey] => 3dda11a0-37c2-4e87-b5ed-e6b2576f25ee
[arttitle] => June 2019 Events in Pennsylvania: Historic
[issue] => Summer
[year] => 2019
[teaser] => <p>If you're into history, you'll love these PA events</p>
[story] => <h2 style="text-align: left;"><strong><span style="color: rgb(0, 168, 133); font-size: 24px;">HISTORIC EVENTS</span></strong></h2><h2 style="text-align: right;"><img class="fr-dib fr-draggable" src="/_img/articles/FIshooter.jpg" style="width: 100%;"><span style="font-size: 10px;"><em>Cook Forest French & Indian War Reenactment </em></span></h2><h2 style="text-align: left;"><span style="font-size: 18px;">May 25-Jul 16. </span><strong><span style="font-size: 18px;">We Can Do It! WWII Traveling Exhibit & Events.</span></strong></h2><p style="text-align: left;">Altoona Railroaders Memorial Museum | 1300 Ninth Ave. | Altoona, PA | 814-946-0834<br><a href="https://whereandwhen.com/events/47628/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449153727505693">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 1. </span><strong><span style="font-size: 18px;">Exploring the Armor.</span></strong></h2><p style="text-align: left;">PA Military Museum | 51 Boal Ave. | Boalsburg, PA 16827 | 814-466-6263<br><a href="https://whereandwhen.com/events/48104/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449285435637163">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 1-2. </span><strong><span style="font-size: 18px;">Korean War Traveling Memorial.</span></strong></h2><p style="text-align: left;">Greene County Fairgrounds | 107 Fairgrounds Road | Waynesburg, PA 15370 | 724-627-8687<br><a href="https://whereandwhen.com/events/49188/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449334775601451">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 1. </span><strong><span style="font-size: 18px;">Bookbinding Workshop.</span></strong></h2><p style="text-align: left;">690 Sugartown Road | Malvern, PA 19355 | 610-640-2667<br><a href="https://whereandwhen.com/events/49600/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449388780331772">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 6-8. </span><strong><span style="font-size: 18px;">75th Anniversary of D-Day.</span></strong></h2><p style="text-align: left;">Eldred World War II Museum | 201 Main St. | Eldred, PA 16731 | 814-225-2220<br><a href="https://whereandwhen.com/events/49209/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449445778398824">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 7-9. </span><strong><span style="font-size: 18px;">World War II Weekend.</span></strong></h2><p style="text-align: left;">Mid-Atlantic Air Museum | 11 Museum Drive | Reading, PA 19605 | 610-372-7333</p><p style="text-align: left;"><a href="https://whereandwhen.com/events/49243/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449525249979605">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 8-9. </span><strong><span style="font-size: 18px;">Cook Forest French & Indian War Encampment.</span></strong></h2><p style="text-align: left;">Cook Forest Sawmill Center for the Arts | 140-170 Theater Lane | Cooksburg, PA 16217 | 814-927-6655<br><a href="https://whereandwhen.com/events/49105/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449607889995875">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 16. </span><strong><span style="font-size: 18px;">18th Century Day.</span></strong><br><span style="font-size: 14px; font-family: Arial, Helvetica, sans-serif;">Brandywine Battlefield Park |1491 Baltimore Pike | Chadds Ford, PA | 610-459-3342<br></span><a href="https://whereandwhen.com/events/48537/"><span style="font-size: 14px; font-family: Arial, Helvetica, sans-serif;"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449654273444362">detail</gwmw></span></a></h2><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 22. </span><strong><span style="font-size: 18px;">Traditional Cherry Fair & Early American Craft Show.</span></strong></h2><p style="text-align: left;">Alexander Schaeffer Farm |213 S. Carpenter St. | <gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638479457839002588">Schaefferstown</gwmw>, PA 17088 | 717-949-2244</p><p style="text-align: left;"><br><a href="https://whereandwhen.com/events/49055/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449701559414876">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 22-23. </span><strong><span style="font-size: 18px;">Wild West Weekend.</span></strong></h2><p style="text-align: left;">Old Bedford Village | 220 Sawblade Road | Bedford, PA 15522 | 814-623-1156<br><a href="https://whereandwhen.com/events/49013/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449773391335356">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 28-30. </span><strong><span style="font-size: 18px;">Living History Encampment & Tactical Demonstrations.</span></strong></h2><p style="text-align: left;"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638486214092116172">Solanco</gwmw> Historical Society | 1932 Robert Fulton Highway | Quarryville, PA<br><a href="https://whereandwhen.com/events/49295/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638449822562246006">detail</gwmw></a></p>
[images] =>
[author] => W&W
[publish] => Y
[sidebardisplay] => N
[notes] =>
[region] => North,South,East,West
[cats] => fairs-festivals,historical-sites,outdoor-recreation-outdoor-recreation
[editdate] => 5/21/19 14:37
)
[28-Jun-2019 19:55:53 UTC] artkey[29]:
[28-Jun-2019 19:55:53 UTC] Return Data Array[28]: Array
(
[artkey] => e55c41b3-d5ce-411a-a33e-48e46a5e55f1
[arttitle] => June 2019 Events in Pennsylvania: Kids
[issue] => Summer
[year] => 2019
[teaser] => <p>Check out these June events in PA that kids will love!</p>
[story] => <h2><span style="font-size: 24px;"><strong><span style="color: rgb(243, 121, 52);">June Events That the Kids Will Love!</span></strong></span></h2><p style="text-align: right;"><span style="font-size: 24px;"><strong><span style="color: rgb(243, 121, 52);"><img class="fr-dib fr-draggable" src="/_img/articles/Youth-&-Family-Field-Day.jpg" style="width: 100%;"></span></strong></span><span style="font-size: 11px;"><em class="">Youth & Family Field Day, Pennsylvania Lumber Museum</em></span></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 1-2, 8-9, 15-16. </span><strong><span style="font-size: 18px;">Strawberry Fun Days.</span></strong></h2><p style="text-align: left;">Shady Brook Farm | 931 Stony Hill Road | Yardley, PA 19067 | 215-598-7240</p><p style="text-align: left;"><a href="https://whereandwhen.com/events/49260/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638695672727548523">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 2. </span><strong><span style="font-size: 18px;">Youth Fishing Derby.</span></strong></h2><p style="text-align: left;">Stone Hedge Golf Course | 287 German Hill Road | Factoryville, PA | 570-836-5108<br><a href="https://whereandwhen.com/events/48294/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638695760725380801">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 7-9. </span><strong><span style="font-size: 18px;">Annual Snake Hunt.</span></strong></h2><p style="text-align: left;">15 Club Road | Sinnemahoning, PA 15861 | 814-546-2835<br><a href="https://whereandwhen.com/events/49102/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638695822865132126">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 8. </span><strong><span style="font-size: 18px;">Children's Day.</span></strong></h2><p style="text-align: left;">Hookstown Fair Grounds, 1198 Route 168 | Hookstown, PA |<br><a href="https://whereandwhen.com/events/48274/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638695872627158580">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 8. </span><strong><span style="font-size: 18px;">Youth & Family Field Day.</span></strong></h2><p style="text-align: left;">PA Lumber Museum | 5660 Route 6 West | Galeton, PA 16922 | 814-435-2652<br><a href="https://whereandwhen.com/events/49525/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638695920597766354">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 9. </span><strong><span style="font-size: 18px;"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638712821698110797">Ecozone</gwmw> Discovery Room.</span></strong></h2><p style="text-align: left;">Pocono Environmental Education Center | 538 Emery Road | Dingmans Ferry, PA 18328 | 570-828-2319<br><a href="https://whereandwhen.com/events/49555/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638695997966007842">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 18-Aug 6. </span><strong><span style="font-size: 18px;">Children's Event: Stories on the Porch.</span></strong></h2><p style="text-align: left;">Rock Ford Plantation | 881 Rockford Road | Lancaster, PA 17602 | 717-392-7223<br><a href="https://whereandwhen.com/events/49500/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638696035319999941">detail</gwmw></a></p><h2 style="text-align: left;"><span style="font-size: 18px;">Jun 22-30. </span><strong><span style="font-size: 18px;">Day Out With Thomas.</span></strong></h2><p style="text-align: left;">Strasburg Rail Road | 301 Gap Road | Ronks, PA 17572 | 717-687-7522, 866-725-9666<br><a href="https://whereandwhen.com/events/49492/"><gwmw class="ginger-module-highlighter-mistake-type-1" id="gwmw-15584638696098779512558">detail</gwmw></a></p><p style="text-align: left;"><br></p>
[images] =>
[author] => W&W
[publish] => Y
[sidebardisplay] => N
[notes] =>
[region] => North,South,East,West
[cats] => kids-stuff-kids-stuff,outdoor-recreation-outdoor-recreation
[editdate] => 5/21/19 14:38
)
[28-Jun-2019 19:55:53 UTC] artkey[28]:
请求的索引 30 的 Var_dump:
[01-Jul-2019 13:06:51 UTC] Return Data Array[30]: Array
(
[artkey] => 9c0e34da-e3ff-4d51-ae71-6b7003f40885
[arttitle] => Pennsylvania Bucket List Challenge
[issue] => Summer
[year] => 2019
[teaser] => <p>Take our Summer Bucket List Challenge</p>
[story] => <p><img class="fr-dib fr-draggable" src="/_img/articles/PA SUMMER Bucket List Challenge 2019.jpg" style="width: 100%;"></p>
[images] =>
[author] => Wendy
[publish] => Y
[sidebardisplay] => N
[notes] =>
[region] => North,South,East,West
[cats] =>
[editdate] => 0000-00-00 00:00:00
)
[01-Jul-2019 13:06:51 UTC] artkey[30]:
[01-Jul-2019 13:06:51 UTC] Var Dump 30:
正如您在上面看到的,我没有在索引为 30 的数组上的 var 转储中返回任何内容,但是 print_r 显示数据,此功能还成功地将所有数据返回给我创建了可选行和列的 jquery,除了故事数据不完整,停在报价处,这就是为什么我在这个函数中,如果我能得到所有数据,就会尝试保存数据。这对故事很有用,但是由于某种原因无法访问此艺术键,不确定发生了什么,我要重新开始...
解决方案
推荐阅读
- selenium - Exception in thread "main" org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary using webdriver.firefox.marionette
- javascript - Can I use condition in my action reducer?
- css - ng bootstrap Accordion to cant add arrow down icon
- android - Android Zoomed Imageview 冲突滑动手势与 ViewPager
- r - How to make boxplots varied widths based on # of responses and sample size in R
- vue.js - 如何将配置文件导入 Vue.JS+Vuex
- c++ - Let users run arbitrary queries our MySQL database safely
- azure - 在 Azure SQL DW 上创建数据库权限
- arduino - 如何使按钮玩具始终开启?
- html - 在反应中使用线性梯度中的道具值