如何在PHP中获取第一个值

如何在PHP中获取第一个值,php,html,wordpress,Php,Html,Wordpress,我有如下输出Wordpress ACF字段: <?php the_field('price'); ?> 250000 15000 <?php $str1 = get_field('price'); $str2 = substr( $str1, 0, -4 ); echo $str2; ?> 这很好,但当我在Wordpress后端中放入两个值时,我遇到了问题,结果如下: <?php the_field('price'); ?> 250000 1500

我有如下输出Wordpress ACF字段:

<?php the_field('price'); ?>
250000 15000
  <?php $str1 = get_field('price'); $str2 = substr( $str1, 0, -4 ); echo $str2; ?>
这很好,但当我在Wordpress后端中放入两个值时,我遇到了问题,结果如下:

<?php the_field('price'); ?>
250000 15000
  <?php $str1 = get_field('price'); $str2 = substr( $str1, 0, -4 ); echo $str2; ?>
我试图实现的是,我只在前端输出第一个值。我们的想法是实现这一点:

250000
我试着这样做:

<?php the_field('price'); ?>
250000 15000
  <?php $str1 = get_field('price'); $str2 = substr( $str1, 0, -4 ); echo $str2; ?>
我知道这不是解决方案,我可以用Regex来做吗,或者有人能帮我吗?我是PHP新手

$value= explode(" ",$price);
$last = $value[0];     
即使您放置3个或更多,它也会起作用,它始终会将第一个作为分隔符保留空间。

此:


单行解决方案,将字符串分解为字符串数组,然后获取数组的第一个元素,使用null coalesce操作符PHP7+避免未定义索引通知

return explode(' ', get_field('price'))[0] ?? null;
这是您的变量

$price=_字段“price”;//价值250000 15000英镑

然后使用php分解函数,可以得到第一个值

$priceseparated=爆炸“”,$price

$priceseparated=array_map'trim',$priceseparated

然后通过var\u dump或print\r检查值

var_dump$价格分开

您的输出将如下所示

array(3) {
  [0]=>
  string(3) "250000"
  [1]=>
  string(3) "15000"
}
它将变成一个数组,使用explode函数,所以获取第一个值时,第二个值$priceseparated[1]可以像这样获取$priceseparated[0],如果有更多值,也可以这样

注意:explode函数将分解每个空格后的所有值

还有另一个PHP函数strtok,其他答案中给出了示例。 但爆炸比斯特克快得多。小琴弦的速度也快了近5倍


若您有内存使用关键的解决方案,您应该记住,strtok函数保存输入字符串参数或对它的引用?使用后在内存中。

有很多解决方案可以获得ist值,您可以通过使用正则表达式获得,如:

第二个解决方案是哪一个比


是另一个选项,已在其他答案中发布。

目前提供的所有解决方案都依赖于ACF字段中的有效输入

如果字段为空怎么办? 有人在额外的空间里放了什么,比如“2500 1500”? 如果您想要第二个、第三个或第四个值,该怎么办

虽然一行程序很好,但函数也可以同样好

function get_price( $price, $which = 0 ) {
    // explode on spaces
    $price = explode( ' ', $price );
    // // get rid of all extra spaces, such as in ' 2500  1500 '
    $price = array_filter( $price );
    // checks if the requested key exists, and returns it
    return ( array_key_exists( $which, $price ) ) ? $price[ $which ] : 0;
}

// usage:
echo get_price( ' 2500  1500 ', 0 ); // returns 2500
echo get_price( '2500 1500 ', 1 ); // returns 1500
echo get_price( '2500', 1 ); // returns 0
echo get_price( '2500 1500 1000 500', 3 ); // returns 500

一次分解一次,第二次分解只用于信息:DTip:is PHP7+。。。。你应该在上面。。。PHP5.6自2018年12月以来一直没有收到过安全更新……虽然您正在获得特定问题的答案,但我认为更根本的解决方案是使用ACF探索不同的字段类型。ACF支持丰富多样的字段类型,并访问它们,等等。trim的使用很好。你永远不能依靠内容编辑器来保证没有多余的空间@cale_b你是对的,如果没有空间,explode将在0索引处放置相同的值。更新了我的answernice和更好的修改,但regex和strtok将生成第一个事件。我投票给u:@devpro-同意,regex甚至更好,但我考虑OP的评论作为一个PHP初学者-regex对初学者来说可能很粗糙,他们对我来说!是的,你是对的,实际上OP也提到了我如何处理这个问题中的正则表达式。这是一个很好的初学者想学习这一点:总是向人们学习,所以-从来没有听说过或使用史托克在此之前!美好的