Php 搜索数组并删除其值
我的mysql表中有一列存储如下数据:Php 搜索数组并删除其值,php,mysql,arrays,Php,Mysql,Arrays,我的mysql表中有一列存储如下数据: 'fb:username;yt:youtubeUsername;tw:twitterUsername;uk:websiteURL' 所有值都用“;”分隔。我想知道的是如何删除这个数组的值(比如用户想要删除他们的YouTube帐户链接),如何使用explode函数搜索字段并从行中干净地删除值 希望我没有把你弄糊涂 $social = explode(";", $arrayquery['socialNetworks']); $
'fb:username;yt:youtubeUsername;tw:twitterUsername;uk:websiteURL'
所有值都用“;”分隔。我想知道的是如何删除这个数组的值(比如用户想要删除他们的YouTube帐户链接),如何使用explode函数搜索字段并从行中干净地删除值
希望我没有把你弄糊涂
$social = explode(";", $arrayquery['socialNetworks']);
$count = substr_count($arrayquery['socialNetworks'], ';') + 1;
for($i = 0; $i < $count; $i++) {
# Seperate data so we can read it
$prefix = substr($social[$i], 0, 2);
$url = strstr($social[$i], ':');
$url = substr($url, 1); # Remove : from resources
{ my script I need to run in For loop. }
}
$social=explode(“;”,$arrayquery['socialNetworks');
$count=substr_count($arrayquery['socialNetworks',';'))+1;
对于($i=0;$i<$count;$i++){
#将数据分开以便我们可以读取
$prefix=substr($social[$i],0,2);
$url=strstrstr($social[$i],“:”);
$url=substr($url,1)#删除:从资源中删除
{我的脚本需要在For循环中运行。}
}
这是我用来从字段中提取数据的脚本。您根本不用数据库的功能 例如,最简单的方法是使用如下表格:
id facebook youtube twitter uk
1 username youtubeUsername twitterUsername http://stackoverflow.com
现在,一次只更新一列是一项简单的任务,例如:updatetablesetyoutube=“”,其中id=1代码>
简单,但如果需要更多“种类”信息,则需要更新表模式。您可以使其更加灵活:
表1
id `othercolumrelatedtouser`
1 'otherdata'
表2
id table1ID tag value
1 1 facebook username
2 1 youtube youtubeUsername
3 1 twitter twitterUsername
4 1 url http://stackoverflow.com
现在您可以使用类似于从Table2中删除的DELETE,其中table1ID=1和tag=“youtube”代码>你说的“删除”是什么意思?这是否意味着您要从字符串中删除特定网络,还是只删除网络的值,而该网络仍将存在于字符串中。无论如何,以下是这两个问题的解决方案:
$arrayquery['socialNetworks'] = 'fb:username;yt:youtubeUsername;tw:twitterUsername;uk:websiteURL';
$networks = explode_networks( $arrayquery['socialNetworks'] );
//Uncomment this print_r to see what $networks looks like
//print_r( $networks );
//here you have the choice:
//To set the value of Twitter account (for example) to an empty string
$networks['tw'] = '';
//or if you want to remove twitter from the list of networks, remove the above line and uncomment the below one
//unset( $networks['tw'] );
$networks = implode_networks( $networks );
//See how your string looks like
//echo $networks
//Functions
function explode_networks( $networks ) {
$networks = array_filter( explode( ';' , $networks ) );
$return = array( );
foreach( $networks as $netw ) {
list( $nw , $data ) = explode( ':' , $netw );
$return[$nw] = $data;
}
return $return;
}
function implode_networks( $networks ) {
$return = array( );
foreach( $networks as $nw => $data ) {
$return[] = $nw . ':' . $data;
}
return implode( ';' , $return );
}
希望能有所帮助。这就是为什么要规范化DB表,这样就不会使用这种可怕的逻辑。一个正确规范化的表将把它简化为一个简单的DELETE FROM…
查询