php中陣列與變數和字串之間的轉換
阿新 • • 發佈:2018-12-02
陣列函式_陣列與變數,字串之間的轉換:
1.list($var1,$val2...)
2.extract($arr, $flag)
3.compact(str1,str2...)
4.explode($delimiter, $string, $limit)
5.implode($glue, $arr)
一、list($var1, $var2...) = $arr 其實list()並不是陣列函式,而是一個左值的語法結構,也echo 類似 1. 功能: 將索引陣列中的元素與指定變數進行繫結 2. 功能: 變數名列表 3. 返回: 與陣列元素值對應的獨立變數 4. 場景: 將索引陣列的內容轉為獨立變數 5. 注意: 必須是索引陣列,關聯內容無效
list($name,$school,$education) = ['小龍女','清華大學','博士'];
echo $name.'在'.$school.'上學'.',她的學歷是'.$education.'<br>';
echo "{$name}的學校是{$school},她正在讀{$education} <hr>";
二、extract($arr,$flag) 1.功能: 將關聯陣列轉為變數 2.引數: $arr(必),$flag(選) 3.返回: 返回變數數量, 同時會生成與陣列元素對應的變數,鍵名轉為變數名,值為變數值 4.場景: 不要對不信任的資料進行轉換,例如$_POST / $_GET...使用者提交資料
$arr1=['id'=>'10','name'=>'楊過','sex'=>'male','salary'=>8800];
// var_export(extract($arr1)); //打印出來是4
//echo var_export(extract($arr1),true);//打印出來也是4
extract($arr1);
echo $name.'的id是'.$id.',他是'.$sex.',他的工資是'.$salary.'<hr>';
三、compact(str1,str2...) 1.功能: 將變數轉為陣列,與extract()相反 2.引數: (1)用一個或多個字串代表變數名, (2)可以使用陣列包裝變數名來簡化 3.返回: 由變數組成的關聯陣列 4.場景: 組裝多個零散變數統一處理,例如做為一條完整記錄並存儲到資料庫中
$name='楊過';
$position='人生巔峰';
$faction='中北';
$array = compact('name','position','faction');
echo '<pre>'.var_export($array,true).'<br>';
//推薦的簡化方案: 將多個變數名打包到一個索引陣列中統一發送給函式處理
$varName = ['name','faction','position'];
echo var_export(compact($varName),true), '<hr>';
四、explode($delimiter, $string,$limit)
1.功能:將規則字串轉為陣列(用一個字串來分割另一個字串)
2.引數:$delimiter 分割字串(必),$string被分割的字串(必),$limit(選)返回陣列元素數量
3.返回:由被分割後的字串組成的陣列
4.場景:大多用於人為建立一些有規律的字串的處理,例如檔案路徑,郵箱,姓名等
$lang = 'html,css,javascript,jquery,php,mysql';
//echo explode(',',$lang); //echo 只能列印字串和整型 var_export() — 輸出或返回一個變數的字串表示。
echo var_export(explode(',',$lang),true).'<br>';
//限制返回的陣列元素的數量,剩下的內容全部放在最後一個元素中
echo var_export(explode(',',$lang,4),true).'<br>';
//limit為負數,則從被生成的陣列尾部刪除,-2,則刪除2個,其實負數是我們用得最多的場景
echo var_export(explode(',',$lang,-2),true).'<hr>';
五、implode($glue, $arr)
1. 功能: 將陣列轉為字串 (用膠水字元$glue)
2. 引數: $glue(可選),$arr(必)
3. 返回: 字串
$arr = ['首頁','公司新聞','公司產品','聯絡我們'];
echo var_export(implode('|',$arr),true).'<br>';
//新增a標籤,轉為導航
echo var_export(
'<a href="#">'.implode('</a>|<a href="#">',$arr).'</a>',
true).'<hr>';
//生成一條sql新增語句: 'INSERT INTO 表名 (欄位列表) VALUES (值列表)';
//1.先將要新增的記錄以 關聯陣列的方式提供
$staff=['name'=>'DonnieKing','sex'=>'male','age'=>20,'salary'=>10000];
//2.生成語句
$sql = 'INSERT INTO staff';
//3.生成sql語句中的欄位列表
$fields = implode("`,`",array_keys($staff));
// echo $fields;
$sql .= '(`'.$fields.'`)';
// echo $sql;
//4.生成sql語句的值列表部分
$value = implode("','",array_values($staff));
$sql .= " VALUES ('".$value."');";
//4.檢視生成的sql語句
//INSERT INTO staff(`name`,`sex`,`age`,`salary`) VALUES ('DonnieKing','male','20','10000')
echo $sql, '<hr>';