如何在php mysql中使用array_rand()或shuffle()函数
我有以下工作代码来输出州和每个州下的相关城市。然而,我想对每个州的城市进行洗牌或随机化。例如,如果该州是加利福尼亚州,那么我想对其下的相关输出城市进行洗牌或随机化。我尝试过使用不同的方法,比如ORDER BY RAND()、Introde()等等,但没有得到正确的结果如何在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
$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个城市,我想把它们都列在加利福尼亚的下面,然后把它们按顺序随机排列