Toán tử php
Đầu tiên bạn thêm class này:
class Field_calculate {
const PATTERN = '/(?:\-?\d+(?:\.?\d+)?[\+\-\*\/])+\-?\d+(?:\.?\d+)?/';
const PARENTHESIS_DEPTH = 10;
public function calculate($input){
if(strpos($input, '+') != null || strpos($input, '-') != null || strpos($input, '/') != null || strpos($input, '*') != null){
// Remove white spaces and invalid math chars
$input = str_replace(',', '.', $input);
$input = preg_replace('[^0-9\.\+\-\*\/\(\)]', '', $input);
// Calculate each of the parenthesis from the top
$i = 0;
while(strpos($input, '(') || strpos($input, ')')){
$input = preg_replace_callback('/\(([^\(\)]+)\)/', 'self::callback', $input);
$i++;
if($i > self::PARENTHESIS_DEPTH){
break;
}
}
// Calculate the result
if(preg_match(self::PATTERN, $input, $match)){
return $this->compute($match[0]);
}
// To handle the special case of expressions surrounded by global parenthesis like "(1+1)"
if(is_numeric($input)){
return $input;
}
return 0;
}
return $input;
}
private function compute($input){
$compute = create_function('', 'return '.$input.';');
return 0 + $compute();
}
private function callback($input){
if(is_numeric($input[1])){
return $input[1];
}
elseif(preg_match(self::PATTERN, $input[1], $match)){
return $this->compute($match[0]);
}
return 0;
}
}
Sau đó, giả sử bạn có công thức lấy từ DB và gán vào biến như sau :
$f1 = "(a*b+c+d-e)/3";
và các biến giá trị là
$a = 2;
$b = 3;
$c = 5;
$d = 2;
$e = 9;
thì bạn sẽ xử lý như sau:
$f1 = str_replace("a", $a, $f1);
$f1 = str_replace("b", $b, $f1);
$f1 = str_replace("c", $c, $f1);
$f1 = str_replace("d", $d, $f1);
$f1 = str_replace("e", $e, $f1);
$Cal = new Field_calculate();
$result = $Cal->calculate($f1);
echo $result;
[Viblo] Tự động căn giữa image
Ở trong [ ] là đoạn text sẽ hiển thị thay cho ảnh nếu ảnh đó bị lỗi bạn nhé
Resize ảnh trên VIBLO
Có đấy, ví dụ như này:
![R3pins](https://images.viblo.asia/400x400/160435cd-9fb1-4a40-aceb-dea214442e2f.png)
Trong dường link bạn thêm size của nó, như trên là 400x400
[PHP cơ bản] Giải bài toán ATM trả về số lượng tờ tiền cụ thể
bạn sai ở chỗ đặt các điều kiện cho if. với giá trị nhập vào là 1500000, thì khi so sánh trong các lệnh if :
floor($getMoney / 200000) <= $atm200
và
floor($getMoney / 100000) <= $atm100)
chắc chắn sẽ không thỏa mãn ( vì bạn lấy toàn bộ 1500000 để chia thay vì san bớt cho tờ 500k) và tự động nhảy đến điều kiện cuối:
if (($surplus2 % 50000 == 0) && (floor($getMoney / 100000) > $atm100))
và tất nhiên nó thỏa mãn, khi đó nó trả về
Số tờ 500k: " . floor($getMoney / 500000) // = 3 là đúng r
còn các biến $surplus, $surplus1 , $surplus2 sẽ ngay từ đầu = 0, do khi bạn gán đầu tiên như:
$surplus = $getMoney % 500000;
đã trả về giá trị = 0 rồi (1500000 % 500000 = 0)
Làm 1 tool tự động hoá bằng C++ chạy trên termux
Nếu bạn mới học qua lý thuyết và chưa thực hành code c++ bao giờ thì mình góp ý bạn nên tập code mấy ví dụ cơ bản trước để quen cách lập trình ( như in ra dữ liệu, tính toán cơ bản, etc,... ). Còn về tool tự động hóa bạn không nói rõ là tự động cái gì nên cũng khó nói lắm, mình nghĩ sau khi bạn có lượng kiến thức cơ bản về c++ cũng như thực hành thì mới nên google mấy cái đấy mới dễ hiểu được, còn gặp cái khái niệm nào không hiểu thì vẫn google tiếp đến khi hiểu thôi, ví dụ như trước đây mình có lập trình tool auto click bằng c++ trên window, thế là mình google được cái code autoclick, nhưng để hiểu và tùy biến được theo ý muốn thì mình cần đọc hiểu nó mới làm được, do đó mình cần có hiểu biết về c++, sau đó tìm hiểu thư viện mà nó sử dụng ( của mình tìm là window.h ) để hiểu được các hàm chức năng nó sử dụng để làm gì.
Cách lấy từ (cụm từ) đầu tiên trong một chuỗi phân cách bằng dấu phảy trong PHP?
<?php
$array = 'đào,lê,táo,mận';
$x = explode(',', $array,2);
echo $x[0];
?>
Giản đồ data-vocabulary.org không còn hoạt động nữa
Bạn tham khảo cách này chưa https://www.vntonghop.com/2019/10/sua-loi-gian-do-data-vocabulary-blogspot.html
Đọc file Word bằng office.interop.word
Giả sử ta có 1 file demo.doc như sau:
One
Two
three
Ta có chương trình C# như thế này để đọc toàn bộ file
using System;
using Microsoft.Office.Interop.Word;
class Program
{
static void Main()
{
// Ta mở tệp
Application application = new Application();
Document document = application.Documents.Open("C:\\demo.doc");
// Một vòng lặp đếm số từ trong doc rồi in từ đó ra, chú ý là nó đếm số từ chứ ko phải số ký tự
int count = document.Words.Count;
for (int i = 1; i <= count; i++)
{
string text = document.Words[i].Text;
Console.WriteLine("Word {0} = {1}", i, text);
}
// Dùng xong đóng file lại để không tốn bộ nhớ
application.Quit();
}
}
Ta có output sau:
Word 1 = One
Word 2 =
Word 3 = Two
Word 4 =
Word 5 = three
Word 6 =