功能打印但不能处理数组

我们在尝试将函数生成的多个值插入数组时遇到了麻烦。
当我们使用函数打印函数时 一个字符串,我们手动复制结果它可以工作,但是当我们尝试使用字符串到数组时它不工作。</ p>

 &lt;?php 
\ nfunction dateRange($ first,$ last,$ step ='+ 1 day',$ format ='m / d / Y'){

$ current = strtotime($ first);
$ last = strtotime( $ last);

而($ current&lt; = $ last){

$ dates。=“'”。 date($ format,$ current)。 “',”;
$ current = strtotime($ step,$ current);
}

return $ dates;
}

$ all_dates = dateRange('01 / 20/1999',' 01/23/1999' );

echo $ all_dates; / 打印两个日期之间的所有日期:'01 / 20/1999','01/21/1999','01/22/1999','01/23/1999', /

query_posts(array(

'post_type'=&gt;'bbdd',
'meta_query'=&gt;数组(
$ location,
array(
'key'=&gt;'date',
'value'=&gt; ; array($ all_dates),/ 不工作.INSTEAD,如果我们复制“echo $ all_dates”的结果,“手动,它可以工作 /
),

));
\ n?&gt;
</ code> </ pre>
</ div>

展开原文

原文

We are having troubles trying to insert multiple values generated from a function into an array. When we print the function using a string and we copy the results manually it works but when we try to make it work using the string into an array it doesn't.

<?php 

function dateRange( $first, $last, $step = '+1 day', $format = 'm/d/Y' ) {

$current = strtotime( $first );
$last = strtotime( $last );

while( $current <= $last ) {

    $dates .= "'" . date( $format, $current) . "', ";
    $current = strtotime( $step, $current );
}

return $dates;
} 

$all_dates = dateRange( '01/20/1999', '01/23/1999'); 

echo $all_dates; /* PRINTS ALL DATES BETWEEN TWO DATES: '01/20/1999', '01/21/1999', '01/22/1999', '01/23/1999', */

query_posts( array(
'post_type' => 'bbdd',
'meta_query' => array(
    $location,
    array(
        'key' => 'date',
        'value' => array($all_dates), /*  DOESN'T WORK. INSTEAD, IF WE COPY THE RESULT OF "echo $all_dates;" MANUALLY, IT DOES WORK */
    ),
)
) );

?>

dongyuan4790
dongyuan4790 谢谢你的帮助解释。我们现在明白了。
接近 8 年之前 回复
douke1954
douke1954 在代码中执行数组($all_dates)时,结果不是一个数组,其中所有日期都是单独的值。结果是一个包含返回字符串的ONE值的数组。即,不是数组('01/20/1999','01/21/1999')而是数组(“'01/01/1999','01/21/1999'”)。
接近 8 年之前 回复

2个回答



你在函数中返回一个字符串,而不是一个数组。</ p>

  function dateRange($ first,$ last,$ step ='+ 1 day',$ format ='m / d / Y'){

$ current = strtotime($ first);
$ last = strtotime ($ last);

while($ current&lt; = $ last){

$ dates [] = date($ format,$ current);
$ current = strtotime($ step,$ current) );
}

返回$ dates;
}
</ code> </ pre>

这将返回一个数组。</ p>

然后,在你的mysql查询中:</ p>

 'value'=&gt;  $ all_dates 
</ code> </ pre>
</ div>

展开原文

原文

You're returning a string, not an array, in the function.

function dateRange( $first, $last, $step = '+1 day', $format = 'm/d/Y' ) {

    $current = strtotime( $first );
    $last = strtotime( $last );

    while( $current <= $last ) {

        $dates[] = date($format, $current);
        $current = strtotime($step, $current );
    }

    return $dates;
}

That will return an array.

Then, in your mysql query:

'value'   => $all_dates

douhe5092
douhe5092 有效。 非常感谢。
接近 8 年之前 回复

Why not put it in an array in the first place:

<?php

function dateRange( $first, $last, $step = '+1 day', $format = 'm/d/Y' ) {
    $dates = array();
    $current = strtotime( $first );
    $last = strtotime( $last );

    while( $current <= $last ) {

            $dates[] = date($format, $current);
            $current = strtotime( $step, $current );
    }

    return $dates;
} 

?>
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐