我想在循环的init处返回,当数组的计数为10时,我需要将其打印出来。
我不确定是否可能因为,返回是在foreach循环之外。
感谢您的建议。
这是我目前的代码:
<?php
error_reporting(0);
include_once('include.php');
$link=connect_db();
//butta in un array tutti i forecast e usa print_r(array_count_values($array));
//fai un foreach che per ogni previsione fa partire una query con variabi $limit che è il parametro di ff.previsione e il LIMIT 0,$limit
$get_values = "select previsione from forecast where data='2014-05-30'";
$res_values = mysql_query($get_values,$link);
$arr_vals = array();
while( $values = mysql_fetch_assoc($res_values) ) {
array_push($arr_vals, $values['previsione']);
}
$new_array = array();
foreach ( $arr_vals as $key => $value ) {
$limit = $value;
$sel = "select min(op.cognome) as cogg,
op.nome,
op.cognome,
op.ore_giornaliere_time,
ff.ora,
ff.previsione
from
operatori op
join
turni_preconf tp on tp.tot_ore = op.ore_giornaliere
join
forecast ff on tp.inizio=ff.ora
where
ff.data='2014-05-30' and ff.previsione=$limit
group by op.cognome
order by rand()
limit 0,$limit";
$res_sel=mysql_query($sel,$link);
while( $er = mysql_fetch_array($res_sel) ) {
echo $er['nome'].' '.$er['cognome'].': '.remove_sec($er['ora']).'/'.sumatra($er['ora'], $er['ore_giornaliere_time']).'<br>';
$nomecognome = $er['nome'].$er['cognome'];
$orario = $er['ora'].'-'.sumatra($er['ora'], $er['ore_giornaliere_time']);
array_push($new_array, array($nomecognome => $orario));
//$new_array[$nomecognome] = $orario;
}
}
var_dump($new_array);
echo'<br>';
$array2 = call_user_func_array('array_merge', $new_array);
echo count($array2);
if(count($array2) == 10){
var_dump($array2);
}
if(count($array2) != 10){
//RETURN FROM ??? HELP...
}
//butta nome cognome ora_inizio/ora_fine nel seguente modo [nomecognome]=>"ora_inizio-ora_fine" e rimuovi le chiavi duplicate preservando l'ordine
?>
答案 0 :(得分:0)
我仍然不确定你的意思,但是听起来(对我而言)你尝试在完全长度为10之后打印出阵列。否则你想要再次运行foreach循环直到有10个数组中的元素?
如果这是你的意思那么我会考虑把你的foreach放在do {} while()循环中。
与此相似: 编辑:[UNTESTED不确定它是否正常工作]
<?php
//some code
do{
//code that should repeat until arraylength == 10 goes in here
foreach(...)
.
.
.
}while( count($array2) == 10 );
//no need for a second if statment,
//cause it only gets executet if we get out of the loop.
var_dump($array2);
//some other code that gets executed
.
.
.
?>
现在你的代码:
<?php
error_reporting(0);
include_once('include.php');
$link=connect_db();
//butta in un array tutti i forecast e usa print_r(array_count_values($array));
//fai un foreach che per ogni previsione fa partire una query con variabi $limit che è il parametro di ff.previsione e il LIMIT 0,$limit
$get_values = "select previsione from forecast where data='2014-05-30'";
$res_values = mysql_query($get_values,$link);
$arr_vals = array();
while( $values = mysql_fetch_assoc($res_values) ) {
array_push($arr_vals, $values['previsione']);
}
// START REPEAT until count($array2) == 10
do{
$new_array = array();
foreach ( $arr_vals as $key => $value ) {
$limit = $value;
$sel = "select min(op.cognome) as cogg,
op.nome,
op.cognome,
op.ore_giornaliere_time,
ff.ora,
ff.previsione
from
operatori op
join
turni_preconf tp on tp.tot_ore = op.ore_giornaliere
join
forecast ff on tp.inizio=ff.ora
where
ff.data='2014-05-30' and ff.previsione=$limit
group by op.cognome
order by rand()
limit 0,$limit";
$res_sel = mysql_query($sel,$link);
while( $er = mysql_fetch_array($res_sel) ) {
echo $er['nome'].' '.$er['cognome'].': '.remove_sec($er['ora']).'/'.sumatra($er['ora'], $er['ore_giornaliere_time']).'<br>';
$nomecognome = $er['nome'].$er['cognome'];
$orario = $er['ora'].'-'.sumatra($er['ora'], $er['ore_giornaliere_time']);
array_push($new_array, array($nomecognome => $orario));
//$new_array[$nomecognome] = $orario;
}
}
var_dump($new_array);
echo'<br>';
$array2 = call_user_func_array('array_merge', $new_array);
echo count($array2);
}while(count($array2) != 10) //END OF REPEAT
var_dump($array2);
//butta nome cognome ora_inizio/ora_fine nel seguente modo [nomecognome]=>"ora_inizio-ora_fine" e rimuovi le chiavi duplicate preservando l'ordine
?>
希望这有帮助。