我需要从XML中选择随机数量的产品详细信息并具有多个条件。
下面选择8个产品,但它们不是随机的 - 如何使这个随机?
$ randomProducts = $ prod_xml-> xpath(“/ products / product [position()< 9]“);
下面对多个条件进行选择。
$ featuredProducts = $ prod_xml-> xpath('/ products / product [featured = 1 并隐藏!= 1]');
如何将两者合并以获取未设置为隐藏的随机特色产品?
答案 0 :(得分:2)
根据您是否想要首先获取所有非隐藏和特色产品然后选择其中的8个,或者获得8个产品,然后选择所有特色和非隐藏产品,你将有两个不同的XPath表达式:
/products/product[featured =1 and hidden !=1][position() < 9]
并相应地:
/products/product[position() < 9][featured =1 and hidden !=1]
现在,“随机”部分......
XPath 1.0和XPath 2.0(甚至XPath 3.0及其标准函数的W3C工作草案)都没有返回伪随机序列整数(或任何东西)的函数。
因此,您必须形成八个伪随机数的序列并生成一个XPath表达式:
/products/product[featured =1 and hidden !=1]
[contains('|3|5|12|19|4|23|11|7|', concat('|',position(),'|)) ]