foreach对象php,foreach-遍历对象并更改值-php5

我在PHP中有一个简单的wee清理功能

它接受一个值或一组值,并进行一些输入清理.现在,我正在使用mysqli,它将行作为对象来获取,因此我需要能够将其应用于对象和数组

function filter_out($output=''){

if($output != ''){

// i.e passed $_POST array

if(is_array($output)){

$newoutput = array();

foreach($output as $outputname=>$outputval){

$newoutput[$outputname] = stripslashes($outputval);

$newoutput[$outputname] = htmlspecialchars($newoutput[$outputname]);

}

} else if(is_object($input)){

?

}

}

}

谁能告诉我如何用对象作为输入来做等效的事情?

解决方法:

$vars = get_object_vars($input);

foreach ($vars as $outputname => $outputval) {

///...

}

不要尝试对对象本身进行迭代(foreach($object为$key => gt; $value)),因为它并不总是可以正常工作.有时会(以stdClass为例),有时不会(任何实现Traversable的类…

编辑

就您的评论而言…只要这些类没有做任何有趣的事情(__get或__set,protected或private),您就可以这样做:

$newoutput = clone $input; //make a copy to return

$vars = get_object_vars($input);

foreach ($vars as $outputname => $outputval) {

$newoutput->$outputname = htmlspecialchars(stripslashes($outputval));

}

但是我真的想不出任何一种方法可以100%地起作用……另一种选择是返回一个nieve对象(stdclass)而不是提交的对象:

$newoutput = new StdClass();

$vars = get_object_vars($input);

foreach ($vars as $outputname => $outputval) {

$newoutput->$outputname = htmlspecialchars(stripslashes($outputval));

}

标签:input,arrays,php,object

来源: https://codeday.me/bug/20191208/2095026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值