簡體   English   中英

將數組轉換為字符串或對象

[英]Convert an array into string or object

美好的一天,我試圖將數組“ $ list”轉換為字符串或對象。 我使用以下方法:

<?php

include "medclass.php";

session_start();
if (isset($_SESSION['mail'])) 
{
    $list = $_SESSION['basket'];
}
else
header("location: clientsigninpage.php?msg= Log-in First");

$obj = new med_class;
$obj->connectdb();

$val = implode(";",$list);    //implode method
$val = (object) $list;        //object method
$val = serialize($list);      //serialize method

$result = $obj->searchMed($val);

while ($row = $result->fetchObject()) 
{
  echo $row->MedPrice;
}

?>

使用“(對象)”,會給我以下錯誤:“類stdClass的對象無法轉換為字符串”,使用“爆破”:“數組到字符串的轉換”,使用“ serialize()”,它不會打印任何內容。

我傳遞值的函數是:

function searchMed($v1)
    {
        $sql = "select * from storepreview where MedName = '$v1'";
        $ret = $this->con->query($sql);
        return $ret;
    }

我通過查看以下鏈接使用了這些方法:( http://www.dyn-web.com/php/arrays/convert.php ); 將數組轉換為字符串 ); 如何在PHP中將數組轉換為對象?

您可以使用json_encode將Array轉換為String:

$FINAL_VALUE = json_encode($YOUR_OBJECT);

有關更多信息,您可以參考此鏈接

通過運行以下代碼行,在使用implode命令時,我設法重現了“數組到字符串轉換”錯誤:

implode(";", [[]]); // PHP Notice:  Array to string conversion in php shell code on line 1

要將嵌套數組轉換為字符串,我發現一個foreach循環有效:

$nestedArray = ['outerKeyOne' => ['innerKeyOne' => 'valueOne'], 'outerKeyTwo' => ['innerKeyTwo' => 'valueTwo']];
$arrayOfStrings = [];
foreach ($nestedArray as $key => $value) {
    $arrayOfStrings[] = implode(",", $value);
}
implode(";", $arrayOfStrings); // string(17) "valueOne;valueTwo"

與第二行有關的第二個錯誤$val = (object) $list; 是因為嘗試將對象嵌入$sql字符串。 似乎對象不是您想要的,除非它是已實現__toString()方法的對象。

我希望這會有所幫助。 使用var_dump或類似的東西將提供更多的調試輸出,以更好地診斷問題以及上述錯誤消息。 這就是我想到的上述代碼的方式。

暫無
暫無

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

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