我正在尝试回显一个简单的 json_encoded 文件。
<?php
$allMessages = file_get_contents("chatmessages.txt");
$allMessagesArr = explode(PHP_EOL, $allMessages);
$newObj = [];
var_dump($allMessagesArr);
foreach ($allMessagesArr as $thisLine) {
// echo($thisLine . "\n");
if (empty($thisLine) ) {
} else {
$thisLineArr = explode("|", $thisLine);
$newObj[trim($thisLineArr[0])] = trim($thisLineArr[1]);
// echo("here comes another one ".$thisLineArr[0] . " : ". $thisLineArr[1]."\n");
}
}
$newObjForFront = json_encode($newObj);
echo($newObjForFront);
chatmessages.txt 看起来像这样
bob|hello
jimmy|second try incoming again
sam|third try
bob|oh damn
我已经回显了循环中的每一行,第四个元素出现了。但是,当我回显 $newObjForFront 时,它缺少最后一个元素。任何想法为什么?
当您$newObj
在
$newObj[trim($thisLineArr[0])] = trim($thisLineArr[1]);
您使用名称作为数组的索引。由于数组索引必须是唯一的,这意味着实际上最后一个条目会覆盖第一个条目,因此您的实际输出是...
{"bob":"oh damn","jimmy":"second try incoming again","sam":"third try"}
所以它实际上是丢失的第一条消息。
编辑:
如果您只想拥有所有消息,则可以使用
$newObj[] = [ "user"=> trim($thisLineArr[0]), "msg" =>trim($thisLineArr[1])];
这会给你的输出...
[{"user":"bob","msg":"hello"},{"user":"jimmy","msg":"second try incoming again"},{"user":"sam","msg":"third try"},{"user":"bob","msg":"oh damn"}]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句