如何扫描数组并在数字变为false时停止扫描,并在PHP中回显使循环变为false的数字

如何扫描数组并在数字变为false时停止扫描,并在PHP中回显使循环变为false的数字,php,Php,基本上,我在用PHP创建一个简单的音乐播放器,并设置在数组中播放的每首歌曲的id。我有一个脚本,它会随机抽取一个数字,并播放带有相应id的歌曲。我想这样做,如果歌曲已经播放,它就不会再播放了 现在我让它生成一个随机数,如果这个数已经播放过,那么它会在随机数上加1 问题是,如果数字是随机数加1的结果,那么它将再次播放该歌曲。我试图将播放的歌曲存储在一个数组中,然后增加数字,直到它不存在于数组中,但我正在努力找到解决问题的方法 我的代码如下: <?php session_start(); $c

基本上,我在用PHP创建一个简单的音乐播放器,并设置在数组中播放的每首歌曲的id。我有一个脚本,它会随机抽取一个数字,并播放带有相应id的歌曲。我想这样做,如果歌曲已经播放,它就不会再播放了

现在我让它生成一个随机数,如果这个数已经播放过,那么它会在随机数上加1


问题是,如果数字是随机数加1的结果,那么它将再次播放该歌曲。我试图将播放的歌曲存储在一个数组中,然后增加数字,直到它不存在于数组中,但我正在努力找到解决问题的方法

我的代码如下:

<?php
session_start();
$con=mysqli_connect("blah blah blah");

// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if (!isset($_SESSION['played'])) {
    $_SESSION['played'] = array();
}

$result = mysqli_query($con,"SELECT * FROM Data") ;
$num_rows = mysqli_num_rows($result);
$numsongs= .20 * $num_rows;
$numsongs=floor($numsongs);

$music = rand(1,$numsongs);
if (in_array($music, $_SESSION['played'])) {$music = $music+1;};

/* goes on to play music below */

$_SESSION['played'][] = $music;
?>

我没有把我的整个剧本都放进去,除了重复歌曲之外,剧本还能正常工作。我只包括了我如何编写重复脚本的一个片段,以了解我是如何尝试的


提前谢谢

我想你在找这个

$music = rand(1,$numsongs);
while(in_array($music, $_SESSION['played'])){
     $music = $music+1;
     echo 'in array '.$music;
}
echo 'Not in array '.$music;

啊哈!!我知道了!我最终使用了switch(),但形式不同

if (empty($_SESSION['played1'])) {
for ($i = 1; $i <= $numsongs; ++$i) {
$_SESSION['played1'][] = $i;}}
shuffle($_SESSION['played1']);
$music1= $_SESSION['played1'][0]; 
$result = mysqli_query($con,"SELECT * FROM Data WHERE position = '$music1'") ; 
while($row = mysqli_fetch_array($result)){
$del_val=$row[position];
if(($key = array_search($del_val, $_SESSION['played1'])) !== false) {
unset($_SESSION['played1'][$key]);}
if(空($\u会话['played1'])){

对于($i=1;$i查找“shuffle()”,“问题是,如果将1添加到随机数后得到的数字,它将再次播放该歌曲。”你能再解释一下吗?别以为这正是我要找的。Shuffle只是随机化数组,我已经介绍过了。我想让它增加随机数,直到它不在数组中,然后回显该数字。@Brandon你不是随机化数组,你只是随机选取项目。不同的是随机化e数组,然后依次播放从索引0到索引max的歌曲,确保(a)歌曲以随机顺序播放,(b)没有歌曲播放两次(这可能发生在另一种方法中,除非您添加额外的逻辑,这似乎是您在努力解决的问题)。