用PHP中的前一个值(非null)填充数组中的null值
我有一个动态数组,显示如下所示的值:用PHP中的前一个值(非null)填充数组中的null值,php,arrays,foreach,null,Php,Arrays,Foreach,Null,我有一个动态数组,显示如下所示的值: $val_array = array("1","2","","","4","","","","",""); [0] => 1 [1] => 2 [2] => 2 [3] => 2 [4] => 4 [5] => 4 [6] => 4 [7] => 4 [8] => 4 [9] => 4 下面是简单地回显值的代码: foreach($val_array as $key => $value)
$val_array = array("1","2","","","4","","","","","");
[0] => 1
[1] => 2
[2] => 2
[3] => 2
[4] => 4
[5] => 4
[6] => 4
[7] => 4
[8] => 4
[9] => 4
下面是简单地回显值的代码:
foreach($val_array as $key => $value) {
echo $value;
}
其结果是:
[0] => 1
[1] => 2
[2] => null
[3] => null
[4] => 4
[5] => null
[6] => null
[7] => null
[8] => null
[9] => null
我想要实现的是用最前面的非空值替换空值,如下所示:
$val_array = array("1","2","","","4","","","","","");
[0] => 1
[1] => 2
[2] => 2
[3] => 2
[4] => 4
[5] => 4
[6] => 4
[7] => 4
[8] => 4
[9] => 4
我尝试包含一个if语句来检查null值是否存在,然后包含prev函数,但它在第二个值处停止:
foreach($val_array as $key => $value) {
if (empty($val_array)) {
$value = prev($val_array);
}
}
您的if(empty($val_数组))
永远不会为真,因为$val_数组不是空的。您需要检查每个值是否大于0,或者如果您使用的是非数值,也可以检查strlen($value)>0
这应该起作用:
$last_value=NULL;
foreach($val_array as $value) {
if ($value>0) {
$last_value = $value;
}else{
$value = $last_value;
}
echo $value;
}
您的if(empty($val_数组))
永远不会为真,因为$val_数组不是空的。您需要检查每个值是否大于0,或者如果您使用的是非数值,也可以检查strlen($value)>0
这应该起作用:
$last_value=NULL;
foreach($val_array as $value) {
if ($value>0) {
$last_value = $value;
}else{
$value = $last_value;
}
echo $value;
}
嗯,根据数组的生成方式(来自DB或其他),您可以做不同的事情 从你的问题开始,我假设不是这样,这可能会给你一个重新开始的想法 您拥有“新”阵列: 在您的each方法中,我会写一个空值检查(有点像您这样),如下所示:
for ($i=0; i<newArray.length; i++)
{
if ( newArray[i] == null )
{
newArray[i] = getOldArrayValue(i);
}
}
getOldArrayValue(index) {
// Origional array is generated...
$oldArray = array();
oldArray[0] => 1
oldArray[1] => 2
oldArray[2] => 3
oldArray[3] => 4
return oldArray[i];
}
($i=0;i=1)的
oldArray[1]=>2
oldArray[2]=>3
oldArray[3]=>4
返回oldArray[i];
}
如果数组来自DB,则始终可以查询数组值。好的,根据数组的生成方式(来自DB或其他),可以执行不同的操作 从你的问题开始,我假设不是这样,这可能会给你一个重新开始的想法 您拥有“新”阵列: 在您的each方法中,我会写一个空值检查(有点像您这样),如下所示:
for ($i=0; i<newArray.length; i++)
{
if ( newArray[i] == null )
{
newArray[i] = getOldArrayValue(i);
}
}
getOldArrayValue(index) {
// Origional array is generated...
$oldArray = array();
oldArray[0] => 1
oldArray[1] => 2
oldArray[2] => 3
oldArray[3] => 4
return oldArray[i];
}
($i=0;i=1)的
oldArray[1]=>2
oldArray[2]=>3
oldArray[3]=>4
返回oldArray[i];
}
如果数组来自DB,则始终可以查询数组值。这里有一个简单的for循环,您可以使用:
$val_array = array("1","2","","","4","","","","","");
$count = count($val_array);
$last = 0; // if the first values are null or false it will be set to 0
for($i = 0; $i < $count; $i++){
if($val_array[$i] == false){
$val_array[$i] = $last;
} else {
$last = $val_array[$i];
}
}
$val_array=array(“1”、“2”、“1”、“4”、“4”、“1”、“2”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“;
$count=计数($val_数组);
$last=0;//如果第一个值为null或false,则将其设置为0
对于($i=0;$i<$count;$i++){
if($val_数组[$i]==false){
$val_数组[$i]=$last;
}否则{
$last=$val_数组[$i];
}
}
这里有一个简单的for循环,您可以使用:
$val_array = array("1","2","","","4","","","","","");
$count = count($val_array);
$last = 0; // if the first values are null or false it will be set to 0
for($i = 0; $i < $count; $i++){
if($val_array[$i] == false){
$val_array[$i] = $last;
} else {
$last = $val_array[$i];
}
}
$val_array=array(“1”、“2”、“1”、“4”、“4”、“1”、“2”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“4”、“;
$count=计数($val_数组);
$last=0;//如果第一个值为null或false,则将其设置为0
对于($i=0;$i<$count;$i++){
if($val_数组[$i]==false){
$val_数组[$i]=$last;
}否则{
$last=$val_数组[$i];
}
}
有时for比foreach好;)
if($val\u数组[0]==NULL){
$val_数组[0]=“defaultValue”;
}
对于($i=1;$i
有时for比foreach好;)
if($val\u数组[0]==NULL){
$val_数组[0]=“defaultValue”;
}
对于($i=1;$i
感谢@daniel的快速响应!我试过了,效果很好。我尝试过使用prev、next函数使其过于复杂,最终得到了一个很好的if语句。非常感谢您的回答!:)当然……很高兴能帮忙!谢谢@daniel的快速回复!我试过了,效果很好。我尝试过使用prev、next函数使其过于复杂,最终得到了一个很好的if语句。非常感谢您的回答!:)当然……很高兴能帮忙!谢谢@dragonslovetacos的回答!直到我测试完daniels,我才看到你的答案,但我真的很感谢你的帮助:)你是对的,数组来自数据库,这就是为什么有不规则的空值。再次感谢:)谢谢@dragonslovetacos的回答!直到我测试完daniels,我才看到你的答案,但我真的很感谢你的帮助:)你是对的,数组来自数据库,这就是为什么有不规则的空值。再次感谢:)我没有想到使用for循环!感谢您的回答@Akshay2598没有想到使用for循环!感谢您的回答@akshay2598