PHP如何把这样的文本内容转成数组?

文本内容如下:1=test2=test23=test3因为知道一个变量的值为数字,比如我需要知道变量值为1的时候,显示等号右边对应的字符串,也就是已知变量值为1的时候,取... 文本内容如下:
1=test
2=test2
3=test3
因为知道一个变量的值为数字,比如我需要知道变量值为1的时候,显示等号右边对应的字符串,也就是已知变量值为1的时候,取出等号右边的test值
请高手赐教
实际代码情况类似如下:
一个字符串内容为:1.1=test 1.2=test2 1.3=test3
已知一个变量值为1,我希望直接echo 出 "1.1="后面的test
展开
 我来答
hiwff
2014-03-01 · TA获得超过143个赞
知道小有建树答主
回答量:211
采纳率:60%
帮助的人:85.7万
展开全部
$filepath = 'your.txt';
$ret = array();
$f = fopen($filepath, 'r');
if(!$f){
    CLog::warning('file ['.$filepath.'] no exist!');
    return $ret;
}   
while (!feof($f)) {
    $line = fgets($f);
    if ($line) {
        $record = trim($line);
        if (empty($record)) {
            continue;
        }
        $tmpRes = explode('=',$record);
        if (count($tmpRes) < 2) {
            continue;
        }
        $ret[$tmpRes[0]] = $tmpRes[1];
    }   
}
        
var_dump($ret);

 

我测过了,运行正常,楼主记得采纳哦,亲

追问
你好,感谢这么快给我解答。
实际代码情况类似如下:
一个字符串内容为:1.1=test 1.2=test2 1.3=test3
已知一个变量值为1.1,我希望直接echo 出 "1.1="后面的test

数组我不太熟悉,感谢你的帮忙

如能解决,再追加50分以表感谢
追答
$str = '1.1=test 1.2=test2 1.3=test3';
$key = '1.1';

$tmpArr = explode(' ',$str);
$arrData = array();
for($i = 0 ; $i < count($tmpArr); $i++) {
    $tmpData = explode('=', $tmpArr[$i]);
    $arrData[$tmpData[0]] = $tmpData[1];
    //也可以在这里判断然后直接输出,看你具体的逻辑需要
}

var_dump($arrData[$key]);
fadingSING
推荐于2016-02-04 · 超过24用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:44.1万
展开全部
<?php
$str="1=test
2=test2
3=test3";//需要分割的字符串
$strpt="/(\d*=\w*)\b/u";//匹配数值-字符串对的pattern
preg_match_all($strpt,$str,$result,PREG_PATTERN_ORDER);
$resultarray=array();
foreach($result[1] as $v){
$temarray=explode("=",$v);//把匹配到的子组元素按照“=”号分开为数字和字符串
$resultarray[$temarray[0]]=$temarray[1];//以数字为键字符串为值的元素添加到结果数组
}
print_r($resultarray);
?>

上面的代码测试过了 得到的结果数组你自己看看然后根据键值判断一下得到值就可以了
更多追问追答
追问
你好,感谢这么快给我解答。
实际代码情况类似如下:
一个字符串内容为:1.1=test 1.2=test2 1.3=test3
已知一个变量值为1,我希望直接echo 出 "1.1="后面的test

数组我不太熟悉,感谢你的帮忙

如能解决,再追加50分以表感谢
追答
传入1 输出的是1.1对应的? 还是说传入1.1

function getStr($index){//传入的参数就是1.1或者1.2
$str="1.1=test
1.2=test2
1.3=test3";//需要分割的字符串
$strpt="/(\d*.\d*=\w*)\b/u";//匹配数值-字符串对的pattern
preg_match_all($strpt,$str,$result,PREG_PATTERN_ORDER);
$resultarray=array();
foreach($result[1] as $v){
$temarray=explode("=",$v);//把匹配到的子组元素按照“=”号分开为数字和字符串
if($index==$temarray[0]){
echo $temarray[1];
}
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-02
展开全部
内容呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-02
展开全部
内容在哪?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-02
展开全部
内容是null
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式