通过比较 php 中的关联数组索引替换字符串
String replace by comparing associative array index in php
我的数组是
Array
(
[#A] => 12 > 5
[#B] => 4 > 3
)
我想在表达式中替换
((#A) OR (#B) AND (#A))
通过匹配数组的键。所以我期待结果为
((12 > 5) OR (4 > 3) AND (12 > 5))
目前我无法实现。提前致谢。
考虑我的代码段`
$this->logger->debug($datauser); // [ZN1961] => Array([#A] => 12 > 5 [#B] => 4 > 3 ), [ZN1962] => Array ([#A] => 20 > 5 [#B] => 20 > 3 )
logicexpression = ((#A) OR (#B) AND (#A));
$newArr = array();
foreach ($datauser as $key => $value) {
foreach ($value as $logname => $cond) {
if(array_key_exists($logname,$value)){
$newArr[$key] =str_replace($logname, $cond, $logicexpression);;
}
}
}
$this->logger->debug($newArr); // here I am always getting ((12 > 5) OR (4 > 3) AND (12 > 5))`
只是循环到数组,然后使用str_replace()
$array = [ '#A' => '12 > 5', '#B' => '4 > 3' ];
$string = '((#A) OR (#B) AND (#A))';
foreach ($array as $key => $value) {
$string = str_replace($key, $value, $string);
}
echo $string;
字符串替换原生支持数组
$array = [ '#A' => '12 > 5', '#B' => '4 > 3' ];
$string = '((#A) OR (#B) AND (#A))';
$string = str_replace(array_keys($array), $array, $string);
所以可以说,使用数组键我们可以去掉中间人。
在线测试
当然,数组键只是给你一个以键作为值的数组。所以在这种情况下
$array = [ 0 => '#A', 1 => '#B'];
然后它只是将 "search" 数组中的位置与 "replace" 数组中的位置进行字符串替换和 wha la.
干杯。
我的数组是
Array
(
[#A] => 12 > 5
[#B] => 4 > 3
)
我想在表达式中替换
((#A) OR (#B) AND (#A))
通过匹配数组的键。所以我期待结果为
((12 > 5) OR (4 > 3) AND (12 > 5))
目前我无法实现。提前致谢。
考虑我的代码段`
$this->logger->debug($datauser); // [ZN1961] => Array([#A] => 12 > 5 [#B] => 4 > 3 ), [ZN1962] => Array ([#A] => 20 > 5 [#B] => 20 > 3 )
logicexpression = ((#A) OR (#B) AND (#A));
$newArr = array();
foreach ($datauser as $key => $value) {
foreach ($value as $logname => $cond) {
if(array_key_exists($logname,$value)){
$newArr[$key] =str_replace($logname, $cond, $logicexpression);;
}
}
}
$this->logger->debug($newArr); // here I am always getting ((12 > 5) OR (4 > 3) AND (12 > 5))`
只是循环到数组,然后使用str_replace()
$array = [ '#A' => '12 > 5', '#B' => '4 > 3' ];
$string = '((#A) OR (#B) AND (#A))';
foreach ($array as $key => $value) {
$string = str_replace($key, $value, $string);
}
echo $string;
字符串替换原生支持数组
$array = [ '#A' => '12 > 5', '#B' => '4 > 3' ];
$string = '((#A) OR (#B) AND (#A))';
$string = str_replace(array_keys($array), $array, $string);
所以可以说,使用数组键我们可以去掉中间人。
在线测试
当然,数组键只是给你一个以键作为值的数组。所以在这种情况下
$array = [ 0 => '#A', 1 => '#B'];
然后它只是将 "search" 数组中的位置与 "replace" 数组中的位置进行字符串替换和 wha la.
干杯。