我的代码在下面..
echo $type = str_replace(array('q','h','f'),array('Quarter','Half','Full'),$_POST['type']);
这里上面的行$ _POST ['type']有这3个值;
我想替换
我的问题是$ _POST ['type'] ='h',
上述代码的结果意味着$ type的值来自 HalFull 。
为什么会这样......
有没有解决方案......?
由于
答案 0 :(得分:1)
# Create feature column and estimator
column = tf.feature_column.numeric_column('x')
lin_reg = tf.estimator.LinearRegressor(feature_columns=[column])
# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(
x={"x": np.array([1.0, 2.0, 3.0, 4.0, 5.0])},
y=np.array([2.0, 4.0, 6.0, 8.0, 10.0]), shuffle=False,num_epochs=2500,batch_size=1) ###Edited here
lin_reg.train(train_input)
# Make two predictions
predict_input = tf.estimator.inputs.numpy_input_fn(
x={"x": np.array([1.9, 1.4], dtype=np.float32)},
num_epochs=1, shuffle=False)
results = lin_reg.predict(predict_input)
# Print result
for value in results:
print(value['predictions'])
。
对于第一个参数,没有任何内容被替换。
对于第二个参数,str_replace
替换为h
。
对于第二个参数,Half
的{{1}}被f
取代。
所以你最终得到Half
。
有很多方法可以解决这个问题。
最简单的解决方案是改为使用preg_replace
,并优化搜索条件:
Full
答案 1 :(得分:1)
似乎正在用h
取代Half
,然后用f
取代Half
Full
如果你能提供一个仅在源字符串恰好是一个字符时替换的正则表达式,那么可能会有效。
试试这个:
echo $type = preg_replace(array('/^q$/i','/^h$/i','/^f$/i'),array('Quarter','Half','Full'),$_POST['type']);
它有效
答案 2 :(得分:1)
如果您更改替换顺序,那么您可以:
echo $type = str_replace(array('q','f','h'),array('Quarter','Full','Half'),$_POST['type']);
..因为' f'产生' Full'和' Full'没有任何内容,所以下次更换是安全的。
或者您可以选择一种完全不同的方法,这种方法更安全,我敢说更具可读性和可维护性。
$translate = array(
'q' => 'Quarter',
'h' => 'Half',
'f' => 'Full'
);
echo $type = $translate[$_POST['type']];