PHP 中弃用每个函数的替代解决方案
alternative solution for deprecated each function in PHP
我有一些遗留代码,每个代码都用于 return 菜单项值
function fetch () {
$item = each( $this->menu );
if ( $item ) {
return ( $item['value'] );
} else {
reset ( $this->menu );
return false;
}
}
我试图通过添加一个模拟每个函数的函数来解决这个问题:
function each_replacement($arr) {
$key = key($arr);
$result = ($key === null) ? false : [$key, current($arr), 'key' => $key, 'value' => current($arr)];
next($arr);
return $result;
}
并将原始函数 fetch 更改为此(在另一个线程中找到:
function fetch () {
$item = this->each_replacement( $this->menu );
if ( $item ) {
return ( $item['value'] );
} else {
reset ( $this->menu );
return false;
}
}
但输出不正确,它只重复显示第一个菜单项并陷入死循环,所以不起作用。
我的偏好只是重写代码并尝试了一些类似
的东西
foreach ($this->menu as $item) { }
而不是
$item = each( $this->menu )
但这给了我这个错误:
Uncaught Error: Cannot use object of type MenuItem as array
如果有人能帮我想出一个解决方案那就太好了。
完整的菜单代码在这里:
http://sandbox.onlinephpfunctions.com/code/45a3c9c5c24232096744ecd9b915b13982ec551a
关于代码:
each() - Return 数组中的当前键值对和
推进数组游标
current() - Return 数组中的当前元素
next() - 推进数组的内部指针
这意味着 each() = current() val 之后是 next() 调用
~
注意:我会使用 foreach,这只是解释如何保留 fetch() 函数。
代码:
/**
* Iterates over the menu array
* @return mixed item from menu
* @access public
*/
function fetch () {
$item = current($this->menu);
if ( $item ) {
next($this->menu);
return $item;
}
reset($this->menu);
return false;
}
测试here
我有一些遗留代码,每个代码都用于 return 菜单项值
function fetch () {
$item = each( $this->menu );
if ( $item ) {
return ( $item['value'] );
} else {
reset ( $this->menu );
return false;
}
}
我试图通过添加一个模拟每个函数的函数来解决这个问题:
function each_replacement($arr) {
$key = key($arr);
$result = ($key === null) ? false : [$key, current($arr), 'key' => $key, 'value' => current($arr)];
next($arr);
return $result;
}
并将原始函数 fetch 更改为此(在另一个线程中找到:
function fetch () {
$item = this->each_replacement( $this->menu );
if ( $item ) {
return ( $item['value'] );
} else {
reset ( $this->menu );
return false;
}
}
但输出不正确,它只重复显示第一个菜单项并陷入死循环,所以不起作用。
我的偏好只是重写代码并尝试了一些类似
的东西foreach ($this->menu as $item) { }
而不是
$item = each( $this->menu )
但这给了我这个错误:
Uncaught Error: Cannot use object of type MenuItem as array
如果有人能帮我想出一个解决方案那就太好了。
完整的菜单代码在这里: http://sandbox.onlinephpfunctions.com/code/45a3c9c5c24232096744ecd9b915b13982ec551a
关于代码:
each() - Return 数组中的当前键值对和 推进数组游标
current() - Return 数组中的当前元素
next() - 推进数组的内部指针
这意味着 each() = current() val 之后是 next() 调用
~
注意:我会使用 foreach,这只是解释如何保留 fetch() 函数。
代码:
/**
* Iterates over the menu array
* @return mixed item from menu
* @access public
*/
function fetch () {
$item = current($this->menu);
if ( $item ) {
next($this->menu);
return $item;
}
reset($this->menu);
return false;
}
测试here