如何在不使用echo或在php中打印的情况下将echo结果保存在变量中?

时间:2019-09-20 10:59:59

标签: php eloquent

我正在通过循环作为字符串创建动态查询,并希望运行该查询并将结果保存在变量中,然后将该结果作为json返回以实现ajax的目的。 但是问题出在这里,如果我回显停止进一步执行的查询,而只返回查询本身。

import React, { Component } from 'react';
import { Text, View, StyleSheet } from 'react-native';

export default class HelloWorldApp extends Component {
  render() {
    return (
      <View style={styles.videoContainer}>
        <Video
          source={{ uri: 'http://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4' }}
          ref={(ref) => {
            this._player = ref
          }}

          style={styles.video} />
      </View>

    );
  }
}

const styles = StyleSheet.create({
videoContainer: {
  flex: 1,

},
video: {
  position: 'absolute',
    top: 0,
      right: 0,
        left: 0,
  }

})

export default styles;

1 个答案:

答案 0 :(得分:1)

直接口头通话

我认为您可能实际上需要这一行而不是编写的所有代码:

return Share::all()->toArray();

将一部分php代码(例如'Share::all();'打印为字符串)不会执行该代码。当然,它不会给您执行该代码的结果。

使用输出缓冲区

还是您想使用危险的eval来解析代码的输出?在这种情况下:

$data = 'echo "hello world";';

$returnData = (function ($code) {
  ob_start();
  eval($code); // stop executing here
  return ob_get_clean();
})($data);

var_dump($returnData);

请注意,返回数据只能是字符串。它只能是纯字符串。因此,如果您想通过输出缓冲区传递“查询结果”,那对我来说真的没有任何意义。

eval

您可能实际上是在考虑这个问题。

$data = 'return Share::all()->toArray();';
$returnData = eval($data);
var_dump($returnData);

但是您将获得具有现代命名空间的PHP代码的使用效果。确实不建议运行eval