php 使用函式中遇到的坑之 list

2021-09-08 19:13:04 字數 1158 閱讀 7007

1. list 把陣列中的值賦給一些變數

<?php

$info = array('coffee', 'brown', 'caffeine');

//列出所有變數

list($drink, $color, $power) = $info

;echo "$drink is $color and $power makes it special.\n";

?>

<?php

$info = array('coffee', 'brown', 'caffeine');

list($a[0], $a[1], $a[2]) = $info

;var_dump($a

);?>產生如下輸出(注意單元順序和

list

() 語法中所寫的順序的比較):

array(3)

warning

list() 從最右邊乙個引數開始賦值。如果你用單純的變數,不用擔心這一點。 但是如果你用了具有索引的陣列,通常你期望得到的結果和在 list() 中寫的一樣是從左到右的,但實際上不是。 它是以相反順序賦值的。

<?php

$info = array('a'=>'coffee', 'b'=>'brown', 'c'=>'caffeine');

list($drink, $color, $power) = $info

;

echo

$drink

;?>這個時候會丟擲異常:

exception

object

[message:protected] => [notice] : undefined offset: 2這是因為:

list() 僅能用於數字索引的陣列並假定數字索引從 0開始。

解決辦法可以使用sort處理下

<?php

$info = array('a'=>'coffee', 'b'=>'brown', 'c'=>'caffeine');

sort($info

);

list($drink, $color, $power) = $info

;

echo

$drink

;?>

php 使用函式中遇到的坑之 strpos

strpos 查詢字串首次出現的位置 mixed strpos string haystack,mixed needle int offset 0 mystring abc findme a pos strpos mystring,findme 注意這裡使用的是 簡單的 不能像我們期待的那樣工作,因...

使用MessagePack中遇到的坑

網上有很多messagepack的例子,都大同小異,我這裡就不介紹了,主要是說一下遇到的坑。大致情況 服務端和客戶端都能建立連線 客戶端在服務端建立連線的時候,傳送給服務端資料,但服務端就是接受不到訊息,我在編碼器msgpackencoder和msgpackdecoder解碼器中都列印了結果 編碼器...

C opencv使用中遇到的坑

在c 中讀取cv mat的資料時,如果資料不是8位單位元組的,不能使用mat.data i 的形式讀取,因為data是char 型指標.讀取需要指定資料型別,如mat.at i 如果使用指標,需要注意記憶體是否連續,如下所示 int nrows image.rows int ncols image....