【问题标题】:$tokens array does not change at all$tokens 数组根本没有改变
【发布时间】:2016-12-07 20:47:25
【问题描述】:

如果我想使用$tokens array 进行操作,它总是什么也不会发生。示例代码:

$input = array("⋃","⋃","a","⋃","h");
$impl = implode($input);
$impl = preg_replace('/⋃{2}/u','$0|',$impl);
preg_match_all('~\X~u', $impl, $tokens);


$akzent = array("´");

$result = array_pop($tokens);

echo print_r($result);

是不是因为$tokens不是普通数组?

【问题讨论】:

  • preg_match_all 的第三个参数定义它..(哦@jeff,厚脸皮删除!)
  • 什么都没有发生是什么意思?你的意思是:stackoverflow.com/q/3771039/3933332 ?!
  • @Farkie 是的......对不起,这是一个愚蠢的问题。删了,自己体会
  • $tokens 是一个包含子数组的数组。你需要array_pop($tokens[0])
  • $tokensarray_pop($tokens) 之前:Array ( [0] => Array ( [0] => ⋃ [1] => ⋃ [2] => | [3] => a [4] => ⋃ [5] => h ) ) ; $tokensarray_pop($tokens) 之后:Array ( )

标签: php arrays token


【解决方案1】:

这里的$tokens 是一个数组数组。这就是为什么您需要访问第一个子数组$tokens[0] 中的所有匹配项。修改部分代码如下:

preg_match_all('~\X~u', $impl, $matches);
$tokens = $matches[0];
$result = array_pop($tokens);

PHP demo

【讨论】:

  • 如果我想插入带有array_splice的东西该怎么办?它无法正常工作...
  • 不确定你在用代码做什么,I can use array_splice with $tokens
  • 例如,如果我想在位置 1 上插入“ex”$ex = array("ex"); array_splice($ex,1,0, $tokens);
猜你喜欢
  • 2018-02-23
  • 2013-09-13
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 2013-05-22
  • 1970-01-01
相关资源
最近更新 更多