【问题标题】:PHP: foreach loop assign the values of an array to a concatenated string and variablePHP:foreach循环将数组的值分配给连接的字符串和变量
【发布时间】:2018-05-18 17:01:37
【问题描述】:

我想将数组的值分配给带有变量的字符串:

    $my_array_values = array("apple", "orange", "cellular", "box");

//my function
function my_function ($my_array_values, $string) {
foreach ($my_array_values as $my_array_value) {
$string_query = $string;
 echo $string_query . "<br>";
}
}

//string to loop the variable inside the foreach
$string_variable = "SELECT login FROM table WHERE login = '" . $my_array_value . "'";
my_function ($my_array_values, $string_variable);

如果我回显它,结果是这样的(不取变量的数组值):

    SELECT login FROM table WHERE login = ''
SELECT login FROM table WHERE login = ''
SELECT login FROM table WHERE login = ''
SELECT login FROM table WHERE login = ''

结果应该是这样的:

    SELECT login FROM table WHERE login = 'apple'
SELECT login FROM table WHERE login = 'orange'
SELECT login FROM table WHERE login = 'cellular'
SELECT login FROM table WHERE login = 'box'

我该怎么做? 亲切的问候

【问题讨论】:

  • 如果 $string_variable 是这样的?: $string_variable = "SELECT login FROM table WHERE login = '" 。 $my_array_value 。 "' AND STATUS = 'Active' AND e_mail IS NOT NULL AND e_mail != '' AND usertype != 'home' AND usertype != 'box'";

标签: php arrays function foreach


【解决方案1】:

你想要达到什么目的? MySQL IN 函数查找值“IN”一个子集或其他信息池。

$query= "SELECT login FROM table WHERE login IN ({implode(',', $my_array_values)})";

这会比一遍又一遍地循环更容易吗?

【讨论】:

  • 我想我的意思是,你为什么一遍又一遍地迭代 SQL 语句?另外,请注意数组中的 SQL 注入。
  • 是的,我知道,SQL 只是一个与变量连接的字符串示例。
  • 啊,我明白了。抱歉,这个例子让我很困惑。在这种情况下,以下任何一个答案都可以满足您的需求:)
【解决方案2】:

正确的做法是这样的:

$my_array_values = array("apple", "orange", "cellular", "box");

//my function
function my_function ($my_array_values, $string) {
  foreach ($my_array_values as $my_array_value) {
    $string_query = $string . $my_array_value . "'";
     echo $string_query . "<br>";
  }
}

//string to loop the variable inside the foreach
$string_variable = "SELECT login FROM table WHERE login = '" ;
my_function ($my_array_values, $string_variable);

【讨论】:

  • 如果 $string_variable 是这样的?: $string_variable = "SELECT login FROM table WHERE login = '" 。 $my_array_value 。 "' AND STATUS = 'Active' AND e_mail IS NOT NULL AND e_mail != '' AND usertype != 'home' AND usertype != 'box'";
  • 你会这样做。您可以以任何您想要的方式连接。请记住,如果你想要数组中的每个值,你必须像我的回答那样做。
【解决方案3】:

无需在您的函数中创建额外的变量。简单地回显所传递的内容以及从传递的数组中提取的值。

$my_array_values = array("apple", "orange", "cellular", "box");

//my function
function my_function ($my_array_values, $string) {

    foreach ($my_array_values as $my_array_value) {
        echo $string . $my_array_value . "'<br>";
    }

}  // end of my_function

//string to loop the variable inside the foreach
$string_variable = "SELECT login FROM table WHERE login = '";
my_function ($my_array_values, $string_variable);

【讨论】:

  • 如果 $string_variable 是这样的?: $string_variable = "SELECT login FROM table WHERE login = '" 。 $my_array_value 。 "' AND STATUS = 'Active' AND e_mail IS NOT NULL AND e_mail != '' AND usertype != 'home' AND usertype != 'box'";
  • 如果是@Max呢?这个问题非常具体,并且没有在查询字符串的中间包含@my_array_value 变量。有很多方法可以通过给出的答案来打破常规。
  • 我知道@Dave:我的具体问题是:在不破坏字符串的情况下,如何在字符串中循环连接这个变量 $my_array_value?
  • 你似乎改变了你的问题。也许我们需要退后一步,弄清楚你到底想要完成什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
相关资源
最近更新 更多