【问题标题】:php split array string into dataphp将数组字符串拆分为数据
【发布时间】:2012-09-25 13:35:49
【问题描述】:

下面的脚本显示了一个文本文件中的搜索字符串,我的文本文件的内容如下:

60, 1, 1, 188, pdgje5566

60、1、1、188、pdgje5565

if(!empty($extTxId)){
$searchfor = $extTxId;

$matches = array();

$handle = @fopen($file, "r");
if ($handle)
{
    while (!feof($handle))
    {
        $buffer = fgets($handle);
        if(strpos($buffer, $searchfor) !== FALSE)
            $matches[] = $buffer;
    }
    fclose($handle);
}

print_r($matches);

输出为

数组 ([0] => 60, 1, 1, 188, ppje5566)

但是我想分解由逗号(,)分隔的数据并存储到变量中,无论如何都要这样做吗?

谢谢。

【问题讨论】:

  • 嗯,你的意思是$tokens = explode(",", $str);?该函数的字面意思是explode。

标签: php arrays split explode


【解决方案1】:

我想分解用逗号(,)分隔的数据

使用explode()

如果这是一个 CSV 文件(或其他一些 分隔 文件),我建议查看 fgetcsv()。它实际上是fgets()explode(),这似乎是您所需要的。

【讨论】:

  • 我尝试过explode(",",$matches),但没有成功,有什么样本吗?
  • 根据您的阵列,您不能在 $matches 上执行此操作,因为这是整个阵列。您需要在元素上执行此操作,例如$matches[0]
【解决方案2】:

因为每个逗号之间都有空格,所以可以修剪每个元素。

// Iterate through each item int the array (you can do $matches[0] if you just want the first)
foreach ($matches as $match)
{
     $output_array = array_map('trim',explode(',',$match));

     print_r($output_array);
}

输出:

Array
(
    [0] => 60
    [1] => 1
    [2] => 1
    [3] => 188
    [4] => pdgje5565
)

示例:http://codepad.org/aSyVX5Bj

【讨论】:

  • 不是真的,如果碰巧没有空格,那你就完蛋了。
  • 同意。 fgetcsv() 将解释这一点。这些答案中的大多数只是重建其功能。
  • 我知道,但他没有使用fgetcsv(),这就是我以这种方式回答的原因
  • 嘿,同意,在这种情况下好多了。
【解决方案3】:

试试看

foreach(Array[0] as $element)
{
     echo $element;
}

【讨论】:

    【解决方案4】:

    如果你知道你得到的输入的确切结构,你可以这样做:

    $string = '60, 1, 1, 188, pdgje5565';
    // Using trim just to be sure
    list($varA, $varB, $varC, $varD, $varE) = explode(', ', trim($string));
    

    这样你会得到如下结果:

    $varA = 60;
    $varB = 1;
    $varC = 1;
    $varD = 188;
    $varE = 'pdgje5565';
    

    这里的主要优点是你会得到像样的变量而不是带有抽象索引的数组,但只有当你确定你的结构是恒定的时才好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多