簡體   English   中英

PHP通知“ yii \\ base \\ ErrorException”,消息為“數組到字符串轉換”-yii2

[英]PHP Notice 'yii\base\ErrorException' with message 'Array to string conversion' - yii2

我的代碼:

$transactions->newSet = implode("@s@",$item['pattern']);

來自json的模式對象的數組值被傳遞:

Array
(
    [0] => /="\something\\//
    [1] => /something\\?t[p]/
)

錯誤:

PHP通知“ yii \\ base \\ ErrorException”,消息為“數組到字符串轉換”

我正在嘗試從json文件導入數據,並最終出現此錯誤。

提前致謝。

更新:

JSON數據:

[
  {
    "description": "old_text_id = 2",
    "pattern": [
      "\/something\/",
      "\/something\?t[p]\/"
    ],
    "severity": 0,
    "type": 1,
    "id": 1,
    "name": {
      "subFamily": "fam",
      "variant": "0"
    }
  }]

Var_dump結果:

array(2) {
  [0]=>
  string(30) "/something/"
  [1]=>
  string(71) "/something\?t[p]/"
}
PHP Notice 'yii\base\ErrorException' with message 'Array to string conversion'

好的,事情是元素本身就是數組本身,因為http://php.net/manual/es/function.implode.php函數期望數組的每個元素都是字符串(或者能夠轉換為一個)。

當數組的元素之一是數組時,它將失敗。 這就是您遇到“數組到字符串”轉換錯誤的時候。

基本上,您不能內爆這樣的數組。

在下一個代碼中,您可能會在第三和第四行看到問題

  $array = [];
  $array[0] = "/something/";
  $array[1][1] = "/something/";
  $array[1][2] = "/something2/";

  $aux = implode("@s@",$array);

  var_dump ($aux);

在這里工作:

  $array = [];
  $array[0] = "/something/";
  $array[1] = "/something/";

  $aux = implode("@s@",$array);

  var_dump ($aux);

編輯評論和一些瘋狂的英語:

問題不在於您導入它的方式,而是要尋找的是“內爆多維數組”。您無法將數組數組打印為這樣的字符串。 你可以看這里

放大和分解多維數組

要在php中使用implode函數,第一個參數必須為字符串(引用)。

暫無
暫無

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

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