PHP 数组的搜索函数中的无限循环
infinite loop in search function for PHP array
作为练习,我需要创建一个搜索功能。在此函数中,输入是一个值,输出是该值在数组中重复的次数。但错误显示:
“致命错误:内存不足(已分配 178257920)(已尝试分配 262144 字节)在...第 51 行”
PHP代码为:
//here is first part of search function.
class searching extends JsonHelper {
public $s = 0;
public function search($index) {
$temp = $this->myarray;
$s = $this->s;
foreach ($temp as $value) {
if(!is_array($value)) {
if ($value == $index) {
echo "i found something";
$s += 1;
} else {
continue;
}
} else {
$this->searchB($value, $index , $temp);
}
}
}
//secend part of search for arrays that are deeper
function searchB($A, $B, $C) {
$s = $this->s;foreach ($A as $AA){
if (!is_array($AA)) {
if ($AA == $B) {
echo "i found something";
$s += 1;
} else {
}
} else {
$this->searchB($A, $B, $C); //line 51 is here
}
}
}
}
$object = new searching("jsonProject.json");
echo $object->search("pro8");
echo $object->s;
$object->s = 0;
json 文件显示有 4 个“pro8”
[
{
"id": 1,
"Client": "client 1",
"Project": "project 1",
"StartDate": "2018\/11\/02 16:57:35",
"CompletedDate": "",
"projectUrl": "project-1",
"pro": {
"pro2": "pro8",
"pro4": "pro8",
"pro6":
{
"pro7": "pro8",
"pro9": "pro8"
}
}
}
]
如何解决这个死循环?
无限循环来自这个语句:
$this->searchB($A, $B, $C); //line 51 is here
你指向同一个变量 $A 而不是 $AA 我想你想要这个:
$this->searchB($AA, $B, $C); //line 51 is here
还有一件事
$s += 1;
不会改变
$this->s
最好只使用
$this->s += 1;
甚至更好
$this->s++;
作为练习,我需要创建一个搜索功能。在此函数中,输入是一个值,输出是该值在数组中重复的次数。但错误显示:
“致命错误:内存不足(已分配 178257920)(已尝试分配 262144 字节)在...第 51 行”
PHP代码为:
//here is first part of search function.
class searching extends JsonHelper {
public $s = 0;
public function search($index) {
$temp = $this->myarray;
$s = $this->s;
foreach ($temp as $value) {
if(!is_array($value)) {
if ($value == $index) {
echo "i found something";
$s += 1;
} else {
continue;
}
} else {
$this->searchB($value, $index , $temp);
}
}
}
//secend part of search for arrays that are deeper
function searchB($A, $B, $C) {
$s = $this->s;foreach ($A as $AA){
if (!is_array($AA)) {
if ($AA == $B) {
echo "i found something";
$s += 1;
} else {
}
} else {
$this->searchB($A, $B, $C); //line 51 is here
}
}
}
}
$object = new searching("jsonProject.json");
echo $object->search("pro8");
echo $object->s;
$object->s = 0;
json 文件显示有 4 个“pro8”
[
{
"id": 1,
"Client": "client 1",
"Project": "project 1",
"StartDate": "2018\/11\/02 16:57:35",
"CompletedDate": "",
"projectUrl": "project-1",
"pro": {
"pro2": "pro8",
"pro4": "pro8",
"pro6":
{
"pro7": "pro8",
"pro9": "pro8"
}
}
}
]
如何解决这个死循环?
无限循环来自这个语句:
$this->searchB($A, $B, $C); //line 51 is here
你指向同一个变量 $A 而不是 $AA 我想你想要这个:
$this->searchB($AA, $B, $C); //line 51 is here
还有一件事
$s += 1;
不会改变
$this->s
最好只使用
$this->s += 1;
甚至更好
$this->s++;