Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php mysql中使用array_rand()或shuffle()函数_Php_Mysql_Random_Shuffle - Fatal编程技术网

如何在php mysql中使用array_rand()或shuffle()函数

如何在php mysql中使用array_rand()或shuffle()函数,php,mysql,random,shuffle,Php,Mysql,Random,Shuffle,我有以下工作代码来输出州和每个州下的相关城市。然而,我想对每个州的城市进行洗牌或随机化。例如,如果该州是加利福尼亚州,那么我想对其下的相关输出城市进行洗牌或随机化。我尝试过使用不同的方法,比如ORDER BY RAND()、Introde()等等,但没有得到正确的结果 $get_result = "select DISTINCT state_name, city_name from country WHERE country_name='$select_country' ORDER BY

我有以下工作代码来输出州和每个州下的相关城市。然而,我想对每个州的城市进行洗牌或随机化。例如,如果该州是加利福尼亚州,那么我想对其下的相关输出城市进行洗牌或随机化。我尝试过使用不同的方法,比如ORDER BY RAND()、Introde()等等,但没有得到正确的结果

    $get_result = "select DISTINCT state_name, city_name from country WHERE country_name='$select_country' ORDER BY state_name ASC";
    $result = array();
    $run = mysqli_query($dbconfig, $get_result);

    while ($row=mysqli_fetch_array($run)) {
        $state_name = $row['state_name'];
        $city_name = $row['city_name'];

        if (!isset($result[$state_name])) {
            echo '<p>' . $state_name . '</p>';
            $result[$state_name] = true;
        }

        echo '<p style="margin-left: 10px;"><a href="http://examplesite.com/'.$city_name.'">'. $city_name .'</a></p>';
     }
$get\u result=“从国家/地区选择不同的州/地区名称,城市/地区名称=“$select\u country”按州/地区名称ASC排序”;
$result=array();
$run=mysqli\u查询($dbconfig,$get\u结果);
while($row=mysqli\u fetch\u数组($run)){
$state_name=$row['state_name'];
$city_name=$row['city_name'];
如果(!isset($result[$state_name])){
回显“”.$state_name.“

”; $result[$state_name]=true; } 回音“

在此问题上的任何帮助都将不胜感激。

//首先,您需要获取所有数据
//first you need to fetch all data
$states = array();
while ($row=mysqli_fetch_array($run)){
    $state_name = $row['state_name'];
    $city_name = $row['city_name'];
    $city_with_dashes = $row['city_name_with_dash']; 
    if (!isset($states[$state_name])) {
        $states[$state_name] = array(
            'name' => $state_name,
            'cities' => array()
        );
    }
    //add city to state
    $states[$state_name]['cities'][] = array(
        'name' => $city_name,
        'dashes' => $city_with_dashes
    );
}

//now you can iterate by this data
foreach ($states as $state) {
    echo '<p>' . $state['name'] . '</p>';
    //shuffle state cities
    shuffle($state['cities']);

    //and display cities
    foreach ($state['cities'] as $city) {
        echo '<p style="margin-left: 10px;"><a href="http://examplesite.com/'.$city['dashes'].'">'. $city['name'] .'</a></p>';            
    }
}
$states=array(); while($row=mysqli\u fetch\u数组($run)){ $state_name=$row['state_name']; $city_name=$row['city_name']; $city_with_破折号=$row['city_name_with_破折号']; 如果(!isset($states[$state_name])){ $states[$state\u name]=数组( 'name'=>$state\u name, “城市”=>array() ); } //将城市添加到州 $states[$state_name]['cities'][]=数组( 'name'=>$city\u name, “破折号”=>带破折号的$city\u ); } //现在您可以通过该数据进行迭代 foreach($states作为$state){ 回显“”.$state['name']。

”; //洗牌州立城市 洗牌($state['cities'); //和展示城市 foreach($state['cities']作为$city){ 回音“

//首先需要获取所有数据
$states=array();
while($row=mysqli\u fetch\u数组($run)){
$state_name=$row['state_name'];
$city_name=$row['city_name'];
$city_with_破折号=$row['city_name_with_破折号'];
如果(!isset($states[$state_name])){
$states[$state\u name]=数组(
'name'=>$state\u name,
“城市”=>array()
);
}
//将城市添加到州
$states[$state_name]['cities'][]=数组(
'name'=>$city\u name,
“破折号”=>带破折号的$city\u
);
}
//现在您可以通过该数据进行迭代
foreach($states作为$state){
回显“”.$state['name']。

”; //洗牌州立城市 洗牌($state['cities'); //和展示城市 foreach($state['cities']作为$city){ 回音“

更改您的查询添加组\u concat函数,然后从城市数组中获取随机值

$get_result = "select state_name, 
                      group_concat(city_name) city_name
                 from country 
                 WHERE country_name='$select_country' 
                 group by state_name 
                 ORDER BY state_name ASC";

$result = array();
$run = mysqli_query($dbconfig, $get_result);
while ($row=mysqli_fetch_array($run)){
    $state_name = $row['state_name'];
    $city_names = shuffle(explode(',', $row['city_name']));
    echo '<p>' . $state_name . '</p>';
    foreach ($city_names as $city)
        echo '<p style="margin-left: 10px;">
              <a href="http://examplesite.com/'.$city_name.'">'.
              $city_name[array_rand($city_name)] .'</a></p>';
$get\u result=“选择州名称,
团体名称(城市名称)城市名称
来自农村
其中country_name=“$select_country”
按州名称分组
按州排序(名称ASC);;
$result=array();
$run=mysqli\u查询($dbconfig,$get\u结果);
while($row=mysqli\u fetch\u数组($run)){
$state_name=$row['state_name'];
$city_name=shuffle(分解(',',$row['city_name']);
回显“”.$state_name.“

”; foreach($city_名称为$city) echo'

';

}

更改您的查询添加组\u concat函数,然后从城市数组中获取随机值

$get_result = "select state_name, 
                      group_concat(city_name) city_name
                 from country 
                 WHERE country_name='$select_country' 
                 group by state_name 
                 ORDER BY state_name ASC";

$result = array();
$run = mysqli_query($dbconfig, $get_result);
while ($row=mysqli_fetch_array($run)){
    $state_name = $row['state_name'];
    $city_names = shuffle(explode(',', $row['city_name']));
    echo '<p>' . $state_name . '</p>';
    foreach ($city_names as $city)
        echo '<p style="margin-left: 10px;">
              <a href="http://examplesite.com/'.$city_name.'">'.
              $city_name[array_rand($city_name)] .'</a></p>';
$get\u result=“选择州名称,
团体名称(城市名称)城市名称
来自农村
其中country_name=“$select_country”
按州名称分组
按州排序(名称ASC);;
$result=array();
$run=mysqli\u查询($dbconfig,$get\u结果);
while($row=mysqli\u fetch\u数组($run)){
$state_name=$row['state_name'];
$city_name=shuffle(分解(',',$row['city_name']);
回显“”.$state_name.“

”; foreach($city_名称为$city) echo'

';

}

警告:当使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。感谢您的建议。为什么通过
ORDER by RAND()
无法获得正确的结果?警告:使用
mysqli
时,您应该使用并将用户数据添加到您的查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。谢谢您的建议。为什么通过
ORDER by RAND()
无法获得正确的结果?谢谢您的回复。我试过你的代码,每个州只输出一个随机城市。如果我最初的问题不是那么清楚,我很抱歉。我想输出各州的所有相关城市,并对它们进行洗牌或随机化。例如:如果加利福尼亚州有25个城市,我想在每次刷新页面时将它们全部列在加利福尼亚州下,并对这些城市进行洗牌(将这些城市随机排列,使其不具有相同的排列顺序)。代码要求最小的更改,因为$city_names已经包含所有城市的列表谢谢您的回复。我试过你的代码,每个州只输出一个随机城市。如果我最初的问题不是那么清楚,我很抱歉。我想输出各州的所有相关城市,并对它们进行洗牌或随机化。举个例子:如果加利福尼亚有25个城市,我想把它们都列在加利福尼亚的下面,然后把它们按顺序随机排列