PHP中explode()和implode()函式講解和實戰用法
阿新 • • 發佈:2019-02-02
一、函式講解
1、explode()函式 把字串打散為陣列:
2、implode()函式 把陣列元素組合為字串:
(詳細講解見下文 三)
例如:
<?php
$str = '107_lab_2017';
$array=explode('_', $str);//以下劃線為分隔符將字串打散為陣列
print_r($array);
echo implode('_', $array);//以下劃線為分隔符將數組合併成字串
?>
執行結果為:
Array |
( |
[0] => 107 |
[1] => lab |
[2] => 2017 |
) |
107_lab_2017 |
二、實戰用法
在實際專案中,例如新增好友和關注等用來儲存好友和關注的人的id
比如 id為1的使用者添加了id為2, 3, 4, 5, 6這5個使用者為好友。可以在使用者表中加一個friends欄位 (為防止因好友過多導致超出欄位長度限制 這裡直接給friends一個text型別),
id為1使用者的好友可以字串2_3_4_5_6的形式儲存在friends欄位中
如果需要判斷id為1的使用者是否新增過id為num(Ps:num代表一個數字,為某個使用者的id)的使用者為好友 可以從資料庫中取出friends欄位將其打散為陣列判斷num是否在陣列中。
例如:
<?php $con = mysqli_connect('localhost', 'root', '123456', 'tdbank'); if(mysqli_connect_errno($con)){ die('Could not connect:'.mysqli_error()); } $sql = 'SELECT friends from users WHERE id=1'; $result = mysqli_query($con, $sql); $row = mysqli_fetch_assoc($result); $id_array=explode('_', $row['friends']); if(!isset($_GET['id']) || !is_numeric($_GET['id'])){ echo '使用者不存在'; exit; } //判斷是否已經新增過id為$_GET['id']的使用者為好友 if(in_array($_GET['id'], $id_array)){ echo '你們已經是好友了'; }else{ $friends = empty($row['friends'])?$_GET['id']:$row['friends'].'_'.$_GET['id']; $sql = 'UPDATE users set friends = '."'{$friends}'".' WHERE id = 1'; echo '<br>'.$sql; $status = mysqli_query($con, $sql); if($status){ echo '好友新增成功'; }else{ echo '好友新增失敗'; } } ?>
三、詳細講解
1、語法規則:explode(separator, string, limit);
引數 | 描述 |
---|---|
separator | 必需。規定在哪裡分割字串。 |
string | 必需。要分割的字串。 |
limit |
可選。規定所返回的陣列元素的數目。 可能的值:
|
版本細則:
返回值: | 返回字串的陣列 |
PHP 版本: | 4+ |
更新日誌: |
在 PHP 4.0.1 中,新增了 limit 引數。在 PHP 5.1.0 中,新增了對負數 limit |
2、語法規則: implode(separator,array)
引數 | 描述 |
---|---|
separator | 可選。規定陣列元素之間放置的內容。預設是 ""(空字串)。 |
array | 必需。要組合為字串的陣列。 |
版本細則:
返回值: | 返回由陣列元素組合成的字串。 |
PHP 版本: | 4+ |
更新日誌: | 在 PHP 4.3.0 中,separator 引數變成可選的。 |