【问题标题】:PHP: Using variable inside an array that gets passed into a functionPHP:在传递给函数的数组中使用变量
【发布时间】:2017-06-22 00:40:56
【问题描述】:

是否可以做类似于以下的事情,我已经尝试过但无法让任何变体起作用:

$hello_all = array($str . ' World', $str . ' Universe');

function combine(&$arr){
  $str = 'Hello';
  print_r($arr);
}

combine($hello_all);

我想得到这样的东西:

Array ( [0] => Hello World [1] => Hello Universe )

有更好的方法吗?

【问题讨论】:

  • 是的,但不是那样——恰恰相反。串联将是 IN 一个函数。
  • 您真正想要实现什么?我的意思是,“你好”不会被硬编码,对吗?
  • 不,不是硬编码。这是另一个变量,但我想将示例简化为我所质疑的部分。
  • 你当然可以用 preg_replace 和 array('#replace# World') 之类的东西做一种模板,但这会比 Patrick 的解决方案慢得多

标签: php arrays function


【解决方案1】:

我可能会这样做

$hello_all = array('World', 'Universe');

function combine($arr, $str){

  foreach($arr as $key=>$value){
    $new[] = $str.$value;
  }

  return $new;
}

$print = combine($hello_all, 'Hello ');
print_r($print);

?>

【讨论】:

  • 是的,但是请将 print_r() 放在函数之外,让函数只返回新数组。只是为了我的眼睛......
  • ...忘记返回
  • 是的,我同意。我做了更改
  • 您的权利,因为 print_r 不再在函数中
  • 这是有道理的。我想我简化了我的例子有点太多了。但数组会更接近这个:$hello_all = array('Hidey ho ' . $str . ' World', 'We come in peace ' . $str . ' Universe');
【解决方案2】:

是的,在这种情况下是这样的:

$hello_all = array('World *word*', 'Universe *word*', '*word* mom', 'Hey santa! *word* to you!');

function combine($arr, $str, $find){

  foreach($arr as $key=>$value){
    $new[] = str_replace($find, $str, $value);
  }

  return $new;
}

$print = combine($hello_all, 'Hello', '*word*');
print_r($print);

?>

【讨论】:

    猜你喜欢
    • 2015-12-17
    • 2011-09-27
    • 2020-07-28
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多