1. 程式人生 > >php中陣列與變數和字串之間的轉換

php中陣列與變數和字串之間的轉換


 陣列函式_陣列與變數,字串之間的轉換:
  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>';